游戏陪玩app源码中,关于API签名使用的那些事

一、为什么要签名?
游戏陪玩app源码的接口服务需要解决的三个问题:

  • 请求是否合法:是否是游戏陪玩app源码的信任方
  • 请求是否被篡改:是否被第三方劫持并篡改参数
  • 防止重复请求(防重放):是否重复请求

二、签名生成规则
那么游戏陪玩app源码的数据保有方为了控制调用权限,会为应用端分配唯一的 appKey 、 appSecert 和预定义的加密方式。

  • appKey :为保证游戏陪玩app源码的该调用请求是服务方认可的调用方发出的,保证请求方唯一性(如 test01,如果发现 appKey不再注册库中则认为该请求方不合法)
  • appSecert :增加暴力解密的难度(通常是一段密文,如 SECERT_A)

预定义加密方式:双方约定好的加密方式(一般为散列非可逆加密,如 MD5、SHA1)

ok,我们设定签名设成规则:

1)将 APPKey 加入值请求参数

http://www.sample.com/openapi/getmessage?appKey=test01&name=spiderman&movie=Spider-Man:Homecoming

2)将每个请求参数去除“=”,按 ASCII 升序按“参数 1 参数值 1 参数 2 参数值 2……”的格式组成特定的字符串

appKeytest01movieSpiderManHomecomingnamespiderman

3)将秘钥 SECERT_A 加入上述字符串的前后成为:

SECERT_AappKeytest01movieSpiderManHomecomingnamespidermanSECERT_A

4)按约定方式(如 md5)加密:

2995c83bbc12b147c9b5645396e5700e6af92b7f

5)拼接所有参数,组成 API 请求

第 4 步生成的字符串,就是我们的签名 sign,也作为一个查询参数加入到我们的请求中那么请求就变成了:

www.sample.com/openapi/getmessage?name=spiderman&movie=Spider-Man:Homecoming&sign=2995c83bbc12b147c9b5645396e5700e6af92b7f

平台服务器在接到游戏陪玩app源码的这个请求之后,会将请求包中的所有参数按以上相同的方式进行加密。如果生成的参数签名一致,则签名通过,请求的合法性和请求参数都得到保护,不会被第三方劫持后篡改变为它用。

三、签名中是否需要时间戳
签名的时间戳是防重放(重复请求)的, 只要有个过期时间就好了,例如 1 分钟过期。
可以利用的签名生成规则:参数字典序排序+时间戳+密钥,然后 md5
注意:服务器端生成的签名不是用的服务器时间, 是用的游戏陪玩app源码客户端给过来的时间参数(防止时间戳获取不同源)

四、总结
按照以上的签名规则,最重要的秘钥是 appSecert,是每个调用方打死也不能告诉他人的参数,因为它不参与通讯,仅仅作为游戏陪玩app源码请求端和服务端两方知道的秘钥保证签名的唯一性。当然了有些平台也提供 IP 白名单服务,可以进一步防止 Open API 被冒用。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值