给第三方使用接口的 URL 签名实现

在开放给第三方使用的API中,若是让第三方携带明文的token请求服务,极有可能泄漏token。因为第三方身份验证服务器是依赖于token的,这样会形成不良的后果。为了提升通讯的安全性,咱们须要加密token,就是URL签名了。

实现URL的签名过程

  1. 生成URL签名的signature,假设第三方获取到token后,token=“aff9u87kkk444hjg”,openId=8996,将要调用的API路径是zithan.test/user/show,那么URL签名以下:
signature=md5('zithan.test/user/show?openId=8996&token=aff9u87kkk444hjg')
  1. 组合API的路径
zithan.test/user/show?openId=8996&signature=1aba61306711521e8b52ac2f46bb3ebf
  1. 可是如今还有一个问题,就是重放攻击,没有过时时间,假设非法者截获了这个API路径,就能反复调用这个路径。 改进方法是增长时间戳,增长API路径的时效性。
signature=md5('zithan.test/user/show?openId=8996&token=aff9u87kkk444hjg&timestamp=1550732083')
zithan.test/user/show?openId=8996&timestamp=1550732083&signature=cba2aa328577e6aab3e811517e1aa752

注意事项

  1. md5能够换成其余非对称加密的方法
  2. 在获取token那一个步骤也有可能泄露token,那么严谨就须要采起对称加密,进行数据加密。
  3. 由于增长了时间戳,那么就有可能致使第三方和服务器的差别性,那么就须要计算第三方的时间差,在验证签名或者生成签名的时候考虑进去。
相关文章
相关标签/搜索