参考链接
https://mp.weixin.qq.com/s/VGs1ynTObaGWjzQEjegmzA
一个项目需要对外提供一个接口,提供公网域名进行访问,而且接口和交易相关,因此需要非常注意安全性。以下介绍一些安全措施以及实现方法。
安全措施
常用的安全措施主要有以下两个方面:
一方面是数据传输过程——如何保证数据在传输过程中的安全性;另一方面是数据到达——数据已经到达服务器端时,服务器如何识别数据,如何不被攻击。
具体有以下方式:
1、数据加密
2、数据标签
3、时间戳机制
4、AppId机制
5、限流机制
6、黑名单机制
7、数据合法性校验
实现方法
1、数据加密
目前主流的数据加密方式分为对称加密和非对称加密。
2、数据标签
数据签名使用比较多的是md5算法,将需要提交的数据通过某种方式组合合成一个字符串,然后通过md5生成一段加密字符串,这段加密字符串就是数据包的签名。
3、时间戳机制
解密后的数据,经过签名认证后,取得数据包中的客户端时间戳,然后用服务器当前时间减去客户端时间,看是否是在一个区间内。
4、AppId机制
AppId指的是application identification。生成一个唯一的AppId即可,密钥使用字母、数字或特殊字符随机生成即可,生成的唯一AppId根据实际情况来看是否需要全局唯一,不管是否全局唯一都最好让生成的Id具有趋势递增和信息安全的属性。
5、限流机制
常用的限流算法包括固定窗口计数器算法、滑动窗口计数器算法、漏桶限流和令牌桶限流。
6、黑名单机制
给每个用户设置一个状态比如包括初始化状态、正常状态、中黑状态、关闭状态等,或者直接通过分布式配置中心直接保存黑名单列表,每次检查是否在列表即可。
7、数据合法性校验
数据合法性校验包括常规性校验(包括签名校验、必填校验、长度校验、类型校验、格式校验)和业务校验(根据实际业务而定,比如订单金额不能小于0等)。