[toc]
开放API接口安全处理!
参考文献:
概念
存在问题:
- 数据窃取
- 数据篡改
- 数据泄露
对应解决方法:
- 加密:RSA/DES
- 混淆算法:MD5
- 令牌:TOKEN
加密
对称
DES
AES
非对称(公私钥)
RSA
作用:
- 加密:公钥加密->私钥解密
- 签名:私钥加密->公钥解密(私钥数字签名,公钥验证身份)
MD5
Message Digest Algorithm
MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。
MD5算法特点:
压缩性:任意长度的数据,算出的MD5值长度都是固定的。
容易计算:从原数据计算出MD5值很容易。
抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。
强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。
原理上不能破解,不可逆算法
但是有些数字可以由彩虹表(数据非常庞大)的碰撞来获取
MD5加盐
MD5(++salt)
应用场景
- 接口规定根据那些字段生成MD5
- 接口获取第三方调用者的参数来生成对应的MD5和传入的MD5比较
- 可以校验表单数据的完整性,防篡改
Token
通常在登录时获取,判断用户是否登录状态
开放api参数
id主键不要设置成自增序列
自增序列会容易给轮询,爬虫
重复提交,恶意调用
场景:交易类,订单类,有效期,幂等性
- 返回服务器时间戳参数,调用时传入,与当前服务器时间比较,有效期内才通过
- 随机数
日志
验证码
短信类:图形验证码
注册下发短信:没有用户信息,无法从业务上限制,只能弄人机交互的验证码