php api接口验证签名错误,API常用签名验证方法(PHP实现)
使用场景
现在越来越多的项目使用的前后端分离的模式进行开发,后端开发人员使用API接口传递数据给到前端开发进行处理展示,在一些比较重要的修改数据接口,涉及金钱,用户信息等修改的接口如果不做防护验证,经常容易被人恶意刷接口,导致巨大的损失。
API签名验证
这里我们引入业内比较通用的签名验证来对接口进行参数加密,有以下优势。请求的唯一性:计算出的签名是唯一的,可以用来验证。
参数的可变性:参数中包含时间戳参数,这就保证每次的请求计算出得签名都是不一样的。
请求的时效:由于请求中带有当前发起请求的时间戳参数,服务端可以对时间戳进行验证,过滤超出时效的请求。
安全性:即使请求被人恶意抓包,对方恶意篡改其中的参数,那么签名都是错误的,参数无法修改。
实践出真理
1. 对map类型(即一组键值对)的待签名数据根据键的大小进行排序。map中各参数按字母顺序排序,如果第一个字母相同,按第二个字母排序,依次类推。例如{
"timestamp": "2017-06-08 09:38:00",
"format": "xml",
"app_id": "aabbc",
"cp_extend_info": "",
"sign_type": "HMAC-SHA1",
"sign": "abc"
}
那么,排序后变成{
"app_id": "aabbc",
"cp_extend_info": "",
"format": "xml",
"sign_type": "HMAC-SHA1",
"timestamp": "2017-06-08 09:38:00"
}注意:如果map中包含签名的参数(sign)需要过滤该参数的键值不参与签名,没有值的参数请不要参与签名
2. 对排序后的map进行序列化处理成待签名字符串,拼接后的待签名字符串为app_id=aabbc&format=xml&sign_type=HMAC-SHA1×tamp=2017-06-08 09:38:00
3. 根据HMAC-SHA1算法使用密钥提取待签名字符串的摘要(hash)签名并进行base64_encode编码(便于显性传输和对比),假设签名密钥为 test ,则提取出的摘要签名并进行base64_encode的值为JqoEqPIVVor0eyRHMYiZftsycVo=注意:由于有些数据根据HTTP协议需求,在网络传输过程中需要进行URLencoding,这样接收方才可以接收到正确的参数,但如果这个参数参与签名,那么待签名字符串必须是字符串原值而非URLencoding 的值。
代码实践
PHP示例/**
* 使用密钥生成HMAC-Sha1签名
* @param array $params 请求参数
* @param string $signKey 签名密钥
* @return string
*/
function hmacSha1Sign($params,$signKey)
{
ksort($params);
$paramString = '';
foreach ($params as $key => $value) {
if (is_null($value) || $value=='' || $key == 'sign') {
continue;
}
$paramString .= $key.'='.$value.'&';
}
$paramString = substr($paramString,0,-1);
$sign = base64_encode(hash_hmac("sha1", $paramString, $signKey, $raw_output=TRUE));
return $sign;
}
以上就是日常开发中常用的API验证签名方式,很简单又非常使用,欢迎关注获取更多的教程。
php api接口验证签名错误,API常用签名验证方法(PHP实现)相关推荐
- api接口加密_谈谈API接口开发中的安全性如何解决
如今各种API接口层出不穷,一个API的好与不好可以从很多方面来考量,其中"安全性"就是一个API接口最基本也是最重要的一个特点.本文就来跟大家聊聊关于API接口开发的安全性问题. ...
- 京东商品详情页API接口、京东商品销量API接口、京东商品列表API接口、京东APP详情API接口、京东详情API接口,京东SKU信息接口
京东商品详情页API接口.京东商品销量API接口.京东商品列表API接口.京东APP详情API接口.京东详情API接口,京东SKU信息接口,通过商品ID提取商品详情页各项数据,包含商品标题,sku i ...
- 天猫api接口,天猫详情api接口,天猫优惠券信息api接口,天猫到手价api接口,天猫商品详情接口,可用于行业数据分析,价格监控,竞品分析,品牌维权接口代码对接
一.天猫api接口,天猫详情api接口,天猫优惠券信息api接口,天猫到手价api接口,天猫商品详情接口,可用于行业数据分析,价格监控,竞品分析,品牌维权接口代码如下: 点击获取测试key和secre ...
- 1688店铺所有商品API接口、店铺列表API接口
可以通过1688店铺所有商品API接口采集店铺所有商品详情页各项数据,包含商品标题,SKU信息.价格.优惠价,收藏数.销量.SKU图.标题.详情页图片等店铺内页面上有的数据均可以拿到,大家都知道,16 ...
- 京东商品详情页API接口、京东详情API接口、京东商品销量API接口、京东商品列表API接口、京东APP详情API接口、京东SKU信息接口,京东API接口
通过商品ID或是商品url中的商品ID调用提取京东商品详情页API接口.京东商品销量API接口.京东商品列表API接口.京东APP详情API接口.京东详情API接口,京东SKU信息接口拿到商品详情页各 ...
- 微店商品详情API接口(item_get-获得微店商品详情API接口),微店API接口
一.微店商品详情API接口(item_get-获得微店商品详情API接口),微店API接口代码对接可以获取到宝贝ID,宝贝标题,价格,掌柜名称,库存,最小购买数,宝贝链接,宝贝图片,品牌名称,商品详情 ...
- 唯品会关键字搜索商品API接口(item_search-按关键字搜索唯品会商品API接口),唯品会API接口
一.唯品会关键字搜索商品API接口(item_search-按关键字搜索唯品会商品API接口),唯品会API接口接口可获取到宝贝标题,宝贝价格,宝贝ID,宝贝图片,优惠价,宝贝链接,卖家昵称,店铺所在 ...
- 淘宝/天猫/1688拍立淘API接口(以图搜商品API接口,图片搜索API接口,图片搜索商品API接口)代码对接教程
淘宝/天猫/1688拍立淘API接口(以图搜商品API接口,图片搜索API接口,图片搜索商品API接口)代码对接教程如下: 1.公共参数 名称 类型 必须 描述(接口代码教程wx19970108018 ...
- 京东推荐商品列表API接口-(item_recommend-获取推荐商品列表API接口),京东API接口
一.京东推荐商品列表API接口-(item_recommend-获取推荐商品列表API接口),京东API接口代码对接如下: 1.请求参数: 名称 类型 必须 描述 key String 是 调用key ...
最新文章
- Linux系统常用命令速查手册,建议打印
- 12行代码AC——试题 算法训练 猴子吃包子——解题报告
- git 创建本地仓库、远程仓库,上传项目
- java 布尔逻辑运算符_Java运算符
- Leetcode——1. Two Sum
- Tornado入门之旅
- python浏览器怎么设置_怎么设置jupyter的默认浏览器
- c# 获取excel单元格公式结果_EXCEL公式解析:单元格中数字去重排序思路及公式详解...
- POJ2352 Stars
- 数据可视化历史上的“人肉里程碑”
- python selenium --鼠标事件
- [Linux_Ubuntu13] 声音很小前台无法调节的处理方法
- Magento的主题Shaeng为网上时装店,配件商店,鞋专卖店创造
- 计算机应用基础免费文档课件,计算机应用基础的课件.doc
- ffmpeg合并mkv视频文件和ass字幕文件
- The OCD Brain: how animal research helps us understand a devastating condition
- 快递100企业版接口(API)云打印、电子面单实现Java版
- KeyMob聚合-为国内广大开发者一族提供免费广告管理服务
- 如何理解ANOVA中的F值与P值
- C++重点之“引用变量”用法
热门文章
- ads微带双枝短截线长度的解析计算
- 发现了一个xmp/xmp标签可用来输出html代码
- 国产61850(CMS)协议与国际61850(MMS)协议有什么区别?
- 地球实时卫星图片资源-与当前时间只相差30分钟
- The development server returned response error code: 404的解决方案
- 输入网址 网页能打开,但输入ping出来的IP地址,网页却打不开的问题
- twelveth-alien_invasion-alien_invasion.py
- 中国移动敲定A股发行价,预计上市时市值将达到1.18万亿元
- 电源硬件设计----半桥变换器(Half-Bridge Converter)基础
- 品牌台式计算机主机,游戏台式电脑主机什么牌子好-游戏台式电脑主机品牌排行榜...