使用场景

现在越来越多的项目使用的前后端分离的模式进行开发,后端开发人员使用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&timestamp=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实现)相关推荐

  1. api接口加密_谈谈API接口开发中的安全性如何解决

    如今各种API接口层出不穷,一个API的好与不好可以从很多方面来考量,其中"安全性"就是一个API接口最基本也是最重要的一个特点.本文就来跟大家聊聊关于API接口开发的安全性问题. ...

  2. 京东商品详情页API接口、京东商品销量API接口、京东商品列表API接口、京东APP详情API接口、京东详情API接口,京东SKU信息接口

    京东商品详情页API接口.京东商品销量API接口.京东商品列表API接口.京东APP详情API接口.京东详情API接口,京东SKU信息接口,通过商品ID提取商品详情页各项数据,包含商品标题,sku i ...

  3. 天猫api接口,天猫详情api接口,天猫优惠券信息api接口,天猫到手价api接口,天猫商品详情接口,可用于行业数据分析,价格监控,竞品分析,品牌维权接口代码对接

    一.天猫api接口,天猫详情api接口,天猫优惠券信息api接口,天猫到手价api接口,天猫商品详情接口,可用于行业数据分析,价格监控,竞品分析,品牌维权接口代码如下: 点击获取测试key和secre ...

  4. 1688店铺所有商品API接口、店铺列表API接口

    可以通过1688店铺所有商品API接口采集店铺所有商品详情页各项数据,包含商品标题,SKU信息.价格.优惠价,收藏数.销量.SKU图.标题.详情页图片等店铺内页面上有的数据均可以拿到,大家都知道,16 ...

  5. 京东商品详情页API接口、京东详情API接口、京东商品销量API接口、京东商品列表API接口、京东APP详情API接口、京东SKU信息接口,京东API接口

    通过商品ID或是商品url中的商品ID调用提取京东商品详情页API接口.京东商品销量API接口.京东商品列表API接口.京东APP详情API接口.京东详情API接口,京东SKU信息接口拿到商品详情页各 ...

  6. 微店商品详情API接口(item_get-获得微店商品详情API接口),微店API接口

    一.微店商品详情API接口(item_get-获得微店商品详情API接口),微店API接口代码对接可以获取到宝贝ID,宝贝标题,价格,掌柜名称,库存,最小购买数,宝贝链接,宝贝图片,品牌名称,商品详情 ...

  7. 唯品会关键字搜索商品API接口(item_search-按关键字搜索唯品会商品API接口),唯品会API接口

    一.唯品会关键字搜索商品API接口(item_search-按关键字搜索唯品会商品API接口),唯品会API接口接口可获取到宝贝标题,宝贝价格,宝贝ID,宝贝图片,优惠价,宝贝链接,卖家昵称,店铺所在 ...

  8. 淘宝/天猫/1688拍立淘API接口(以图搜商品API接口,图片搜索API接口,图片搜索商品API接口)代码对接教程

    淘宝/天猫/1688拍立淘API接口(以图搜商品API接口,图片搜索API接口,图片搜索商品API接口)代码对接教程如下: 1.公共参数 名称 类型 必须 描述(接口代码教程wx19970108018 ...

  9. 京东推荐商品列表API接口-(item_recommend-获取推荐商品列表API接口),京东API接口

    一.京东推荐商品列表API接口-(item_recommend-获取推荐商品列表API接口),京东API接口代码对接如下: 1.请求参数: 名称 类型 必须 描述 key String 是 调用key ...

最新文章

  1. Linux系统常用命令速查手册,建议打印
  2. 12行代码AC——试题 算法训练 猴子吃包子——解题报告
  3. git 创建本地仓库、远程仓库,上传项目
  4. java 布尔逻辑运算符_Java运算符
  5. Leetcode——1. Two Sum
  6. Tornado入门之旅
  7. python浏览器怎么设置_怎么设置jupyter的默认浏览器
  8. c# 获取excel单元格公式结果_EXCEL公式解析:单元格中数字去重排序思路及公式详解...
  9. POJ2352 Stars
  10. 数据可视化历史上的“人肉里程碑”
  11. python selenium --鼠标事件
  12. [Linux_Ubuntu13] 声音很小前台无法调节的处理方法
  13. Magento的主题Shaeng为网上时装店,配件商店,鞋专卖店创造
  14. 计算机应用基础免费文档课件,计算机应用基础的课件.doc
  15. ffmpeg合并mkv视频文件和ass字幕文件
  16. The OCD Brain: how animal research helps us understand a devastating condition
  17. 快递100企业版接口(API)云打印、电子面单实现Java版
  18. KeyMob聚合-为国内广大开发者一族提供免费广告管理服务
  19. 如何理解ANOVA中的F值与P值
  20. C++重点之“引用变量”用法

热门文章

  1. ads微带双枝短截线长度的解析计算
  2. 发现了一个xmp/xmp标签可用来输出html代码
  3. 国产61850(CMS)协议与国际61850(MMS)协议有什么区别?
  4. 地球实时卫星图片资源-与当前时间只相差30分钟
  5. The development server returned response error code: 404的解决方案
  6. 输入网址 网页能打开,但输入ping出来的IP地址,网页却打不开的问题
  7. twelveth-alien_invasion-alien_invasion.py
  8. 中国移动敲定A股发行价,预计上市时市值将达到1.18万亿元
  9. 电源硬件设计----半桥变换器(Half-Bridge Converter)基础
  10. 品牌台式计算机主机,游戏台式电脑主机什么牌子好-游戏台式电脑主机品牌排行榜...