其它
1. java提供接口服务, 安全怎么保证
1. 请求合法性校验,考虑采用token方式保证接口不被其他人访问
2. 数据校验,白名单方式验证数据确保不出现异常数据和注入攻击。
3. 数据加密,对数据进行加密保证其他人无法非法监听或截取。
4. 错误处理,对系统返回结果编制返回码,避免堆栈信息泄露。
5. 接口阈值,对接口访问频率设置阈值,超出设定的访问频率时返回错误码 (访问频率测试可以直接在nginx设置,也可以用redis计数器、写缓存计数的方式代码实现)。
个人实际经验:
1 用户id或第三方tokenId校验,
2 . 请求接口url权限校验(请求的url地址是否在用户有权限的url地址列表(可以存redis)中是否存在),
3、 参数校验(非空, 日期格式,ip格式, 数字极值校验, 枚举校验等)
4. 接口使用做幂等校验(例如: 使用redis对 接口的类名+ 方法名+ 参数 作为唯一值存入redis中, 并设置过期时间为三秒, 如果重redis中查询出来存在则表示重复点击了提交按钮)
5. 多部署几台服务,nginx做负载, 减小服务器压力
6. 使用redis缓存数据, 减小数据库压力
7. 对一些特殊字符做过滤替换, 前端传参时先encoding, 后端decoding, 然后特殊字符替换.