admin 管理员组文章数量: 1087139
2024年3月22日发(作者:php开发微信小程序客服功能)
API 接口应该如何设计?如何保证安全?如何签名?如何防重?
在实际的业务中,难免会跟第三方系统进行数据的交互与传递,那么如
何保证数据在传输过程中的安全呢(防窃取)?除了https的协议之外,能
不能加上通用的一套算法以及规范来保证传输的安全性呢?
下面我们就来讨论下常用的一些API设计的安全方法,可能不一定是最好
的,有更牛逼的实现方式,但是这篇是我自己的经验分享.
一、token 简介
Token:访问令牌access token, 用于接口中, 用于标识接口调用者的身
份、凭证,减少用户名和密码的传输次数。一般情况下客户端(接口调用方)需
要先向服务器端申请一个接口调用的账号,服务器会给出一个appId和一个
key, key用于参数签名使用,注意key保存到客户端,需要做一些安全处理,
防止泄露。
Token的值一般是UUID,服务端生成Token后需要将token做为key,
将一些和token关联的信息作为value保存到缓存服务器中(redis),当一个请
求过来后,服务器就去缓存服务器中查询这个Token是否存在,存在则调用接
口,不存在返回接口错误,一般通过拦截器或者过滤器来实现,Token分为两
种:
•
API Token(接口令牌): 用于访问不需要用户登录的接口,如登录、注册、
一些基本数据的获取等。获取接口令牌需要拿appId、timestamp和sign
来换,sign=加密(timestamp+key)
•
USER Token(用户令牌): 用于访问需要用户登录之后的接口,如:获取
我的基本信息、保存、修改、删除等操作。获取用户令牌需要拿用户名和密
码来换
关于Token的时效性:token可以是一次性的、也可以在一段时间范围内
是有效的,具体使用哪种看业务需要。
一般情况下接口最好使用https协议,如果使用http协议,Token机制只是
一种减少被黑的可能性,其实只能防君子不能防小人。
一般token、timestamp和sign 三个参数会在接口中会同时作为参数传
递,每个参数都有各自的用途。
二、timestamp 简介
1、timestamp: 时间戳,是客户端调用接口时对应的当前时间戳,时间戳用于
防止DoS攻击。
当黑客劫持了请求的url去DoS攻击,每次调用接口时接口都会判断
服务器当前系统时间和接口中传的的timestamp的差值,如果这个差值
超过某个设置的时间(假如5分钟),那么这个请求将被拦截掉,如果在设
置的超时时间范围内,是不能阻止DoS攻击的。timestamp机制只能减
轻DoS攻击的时间,缩短攻击时间。如果黑客修改了时间戳的值可通过
sign签名机制来处理。
2、DoS
DoS是Denial of Service的简称,即拒绝服务,造成DoS的攻击行为被
称为DoS攻击,其目的是使计算机或网络无法提供正常的服务。最常见的
DoS攻击有计算机网络带宽攻击和连通性攻击。
版权声明:本文标题:API 接口应该如何设计?如何保证安全?如何签名?如何防重? 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/b/1711101106a588517.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论