声明:下面是我写的接口的验证方法,下面加密方法为 php 代码,来帮前端同事问的,js 是否实现?能实现的话,我就开始怼前端了
/**
* 获取安全验证 sign
* @param $postData post 数据
* @return array
*/
public function getVerifySign($postData){
ksort($postData);
$str = http_build_query($postData);
$timestamp = time();
$sign = md5('demo'.$str.$timestamp);
return ['sign'=>$sign,'timestamp'=>$timestamp];
}
演示
// 初始 post 数据
$postData = [
'name' => '拉拉阿里',
'tag' => 'test',
'description' => '拉拉阿里啦啦啦阿拉~'
];
$signArr = $this->getVerifySign($postData);
// 最终 post 数据
$endArr = array_merge($postData,$signArr);
// endArr
// array:5 [
// "name" => "拉拉阿里"
// "tag" => "test"
// "description" => "拉拉阿里啦啦啦阿拉~"
// "sign" => "ed402b09fa6e6e061491535fc351727d"
// "timestamp" => 1516158324
// ]
1
brickyang 2018-02-28 10:48:31 +08:00
`Array.prototype.sort()` https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
没看懂「数组转 url 格式」 MD5 的 JavaScript 实现 GitHub 上有一大把 |
2
murmur 2018-02-28 10:51:53 +08:00
google npm sort key
|
3
whypool 2018-02-28 10:53:15 +08:00
js 里面不是数组,是对象;
遍历对象的 key,按字典排序,然后拼接 url,就是 queryparams 参数形式的; 这种加密方法具体可以参考微信开发者文档,里面的 accesstoken 校验就是这样加密的 |
4
suzic 2018-02-28 11:18:15 +08:00
原生没有,要自己写
|
5
oott123 2018-02-28 11:56:49 +08:00 via Android
可以,但是没什么卵用。签名的算法和 key 都写在前端,别人随便就扒了,有啥意义呢?
|
6
geelaw 2018-02-28 12:19:17 +08:00 via iPhone
没看出来这个玩意儿怎么就是安全验证了……只是算出一坨大家都知道的东西罢了。
|
7
SakuraKuma 2018-02-28 12:25:10 +08:00
你不会想把算出来的 sign 在前端中给后端请求吧?.jpg
|
8
duan602728596 2018-02-28 12:48:19 +08:00 via iPhone
参数的话自己简单实现,md5 加密 npm 上拉个 md5.js
|