4.安全规约
1.Cross Site Scripting(跨站脚本攻击)
介绍:
- 将 html js 代码注入到浏览器上,docuemnt.cookie 窃取用户cookie,获取用户隐私信息进一步非法操作
方案:
- 设置Cookie 为 HttpOnly
- 过滤特殊字符(过滤器)
2.Cross Site Request Forgery(跨站请求伪造)
介绍:
- 欺骗用户使用浏览器访问已经认证过的网站执行一些操作:发邮件、发消息、转账、购买商品等
方案:
- 检查 Referer,要求请求来源的地址在同一个域名或者来自信任的域名
- 添加校验 Token,例如服务器生成随机数添加在表单中,要求客户端回传这个随机数进行校验
- 输入验证码,对于敏感操作,要求用户输入验证码,提示用户正在进行的敏感操作
3.SQL注入
介绍:
- 服务器上运行通过拼接完成的非法SQL
方案:
- 使用参数话查询,Java 中的 PrepareStatement 是预编译 SQL 语句,由于没有拼接过程,可以防止 SQL 注入,同理还有 MyBatis 的 #{},不要使用可拼接的 ${}
4.隶属于用户个人的数据或功能,必须进行权限校验
5.用户敏感数据禁止直接展示,需要对数据进行脱敏展示
如用户手机号中间4位进行脱敏展示,189****2050
6.用户请求入参必须做校验
- page size 过大,导致 oom
- 恶意 order by 导致慢查询
- 缓存击穿
7.使用平台资源,需要对使用次数、频率进行限制
如短信验证码(烂刷短信验证码资源,且会骚扰用户)等
8.发帖、评论、即时消息等场景,对文本进行涉黄、涉恐等违禁词过滤