API请求签名服务器校验猜测

本文详细介绍了大众点评API的签名生成规则及服务器端校验方法。通过将请求参数按字典顺序排列并使用SHA-1算法加密,结合appkey和appsecret生成签名,有效防止了API请求的篡改。

大众点评API请求签名的疑问和服务器端校验考虑

大众点评的签名生成方式可参考http://developer.dianping.com/app/documentation/signature

内容如下:

概述

大众点评API需要通过签名来访问,签名的过程是将请求参数串以及APP密钥根据一定签名算法生成的签名值,作为新的请求参数从而提高访问过程中的防篡改性。签名值的生成详见下面的描述。

URL签名生成规则


所有大众点评API的有效访问URL包括以下三个部分: 
1. 资源访问路径,如/v1/deal/find_deals; 
2. 请求参数:即API对应所需的参数名和参数值param=value,多个请求参数间用&连接
   如deal_id=1-85462&appkey=00000; 
3. 签名串,由签名算法生成

 

签名算法如下: 
1. 对除appkey以外的所有请求参数进行字典升序排列; 
2. 将以上排序后的参数表进行字符串连接,如key1value1key2value2key3value3...keyNvalueN; 
3. 将app key作为前缀,将app secret作为后缀,对该字符串进行SHA-1计算,并转换成16进制编码; 
4. 转换为全大写形式后即获得签名串 

 

因自己对安全方面不太了解,最近看下api请求篡改问题,看到大众点评的处理方式如上。原来不太明白服务端应该是怎么校验的,网上没怎么找到服务端的校验方式,即使找到一些也感觉还是有点漏洞一样,多看了几遍才发现有appkey这个参数,一般appkey 和appsecret 是配对的,如果请求的时候都传了appkey参数,不传appsecret ,则服务器端根据appkey获取appsecret ,然后按照相同的方式进行加密校验应该就可以了。因为appsecret 没有被暴露的风险,这个即使获取到所有的参数,没有appsecret 也无法生存相同的签名。只是猜测,特此记录

转载于:https://www.cnblogs.com/jecob/p/4864130.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值