当前位置: 首页 > 后端技术 > PHP

第三方接口URL签名的实现

时间:2023-03-30 06:09:14 PHP

在对第三方开放的API中,如果第三方使用明文token请求服务,极有可能导致token泄露。由于第三方认证服务器依赖token,这样会造成不良后果。为了提高通信的安全性,我们需要加密token,也就是URL签名。实现URL签名过程,生成URL签名的签名。假设第三方获取到token后,token="aff9u87kkk444hjg",openId=8996,调用的API路径为zithan.test/user/show,则URL签名如下:signature=md5('zithan.test/user/show?openId=8996&token=aff9u87kkk444hjg')组合API路径zithan.test/user/show?openId=8996&signature=1aba61306711521e8b52ac2f46bb3ebf但是现在还有一个问题,就是重放攻击,没有过期时间,假设不法分子截获此API路径,可重复调用此路径。改进方法是增加时间戳,增加API路径的时效性。signature=md5('zithan.test/user/show?openId=8996&token=aff9u87kkk444hjg×tamp=1550732083')zithan.test/user/show?openId=8996×tamp=1550732083&signature=cba2aa328577e6aab3e81ad717e的获取步骤可以用其他非对称加密方式代替token也可能泄露token,所以需要对称加密,数据加密要严谨。因为加上了时间戳,可能会导致第三方和服务器的时间差,所以需要计算第三方的时间差,在验证或者生成签名的时候考虑进去。