对get方式的参数,如何添加签名,防止数据被篡改或泄露


例如查询用户id为1的个人信息,一般的URL为:http://www.mydomain.com/index.php?act=get_user_info&uid=1

这种情况下查询该用户的个人信息是没有问题的,当这个链接在没有用户登录的限制的状态下也可以查询显得很危险了,因为通过修改uid=1,就可以查询uid=2,uid=3的用户信息,这会导致系统的用户信息泄露,当然我只是用查询用户信息做个例子。


下面介绍下我的算法:

在url的参数后添加新的参数:signature

链接形式:http://www.mydomain.com/index.php?act=get_user_info&uid=1&signature=bfe279945c6109d067bcd295b5189d86


这个signature是如何生成的呢?

一般是参数进行有序排列

本例中:有两个参数act和uid,构建一个数组


$data = array();
$data['uid'] = 1;
$data['act'] = 'get_user_info';


对这个参数数组根据索引升序排列,然后按照key1=value1&key2=value2的方式拼接成一个字符串

①排序

Array
(
    [act] => get_user_info
    [uid] => 1
)

②拼接字符串

$str = "act=get_user_info&uid=1";

③计算签名


// $key 密钥
$signature = md5(md5($str).$key);

将此签名添加到$str后面,http://www.mydomain.com/index.php?act=get_user_info&uid=1&signature=bfe279945c6109d067bcd295b5189d86

注意密钥需要在做好保密,他是保证数据不被篡改的核心依据


  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值