API 接口应该如何设计?如何保证安全?如何签名?如何防重?

201次阅读
没有评论

参考链接 1:https://qy-bb.blog.csdn.net/article/details/107375495

参考链接 2:https://www.php.cn/php-ask-430805.html

接口的安全性主要围绕 Token、Timestamp 和 Sign 三个机制展开设计,保证接口的数据不会被篡改和重复调用

(1)Token 授权机制:(Token 是客户端访问服务端的凭证)– 用户使用用户名密码登录后服务器给客户端返回一个 Token(通常是 UUID),并将 Token-UserId 以键值对的形式存放在缓存服务器中。服务端接收到请求后进行 Token 验证,如果 Token 不存在,说明请求无效。(推荐学习:PHP 编程从入门到精通)

(2) 时间戳超时机制:(签名机制保证了数据不会被篡改) 用户每次请求都带上当前时间的时间戳 timestamp,服务端接收到 timestamp 后跟当前时间进行比对,如果时间差大于一定时间(比如 5 分钟),则认为该请求失效。时间戳超时机制是防御 DOS 攻击的有效手段。

(3) 签名机制:将 Token 和 时间戳 加上其他请求参数再用 MD5 或 SHA- 1 算法(可根据情况加点盐)加密,加密后的数据就是本次请求的签名 sign,服务端接收到请求后以同样的算法得到签名,并跟当前的签名进行比对,如果不一样,说明参数被更改过,直接返回错误标识。

API 接口应该如何设计?如何保证安全?如何签名?如何防重?

正文完
有偿技术支持加微信
post-qrcode
 
评论(没有评论)
验证码