web server里的的application提供给APP,浏览器,第三方调用等客户端的的接口大多采用http协议,如何做到保证接口的数据安全,接口权限验证有如下一些方案:
一。请求被恶意频繁执行
为了防止接口被其他未知客户请求, 可以采用签名的方式对接口进行保护。
原理:
接口
该接口很容易被客户模拟请求的方式频繁请求。
改为 &sign=1213xxx×tamp=12332132key="321dss"
sign是该请求的签名,服务器端验证签名,如果签名正确 则对请求进行处理。
也可以把所有参数按规则排序后进行MD5加密后做签名,可以防止请求数据被篡改。
首页为客户端分配一个私钥。
sign算法:sign = MD5( 时间戳+私钥)。
服务器端限制改签名的有效时间为时间戳+10分钟,就可以保证该签名只在10分钟内有效。
为了区别不同客户端的私钥,通常还会为用户分配一个key。
问题:1.客户端时间不准确,导致在服务器端校验时 时间戳不在有效范围内。
2.市区不同 时间戳不同。
一些短信平台,地图,云存储平台对客户的接口访问采用该方式对接口进行
通常会为用户分配一个key对用户进行识别,在请求的时候携带此key作为用户识别。
二。数据被抓包窃取。
1. HTTPS 保证数据在传输中不被中间人获取。
2. 密码等数据在客户端进行对称加密后进行传输
3. 对于一些安全要求高,但并发不高的请求,可以对所有请求参数进行对称加密。
三。API 的授权问题
参考OAUTH2 模型。
结合微信的网页授权模式。
角色: 授权服务器,资源服务器,用户,请求客户端
四。恶意攻击
1.ngnix拦截
2.