这是我参与「第四届青训营 」笔记创作活动的的第7天。
XSS的防御
永远不要相信用户提交的内容,不要将用户提交的内容直接转换成DOM。使用前端主流框架google-closure-libarary和服务端(Node)的DOMPurify来构成防御。对用户提交的内容进行审核,再对动态输出的页面的内容进行html编码,使恶意脚本代码无法在浏览器中执行。
CSRF防御
当检测到异常访问时,限制访问
因为攻击者也有可能是注册用户,所以这里的token往往和具体用户绑定,同时token需要一个过期时间
注入防御
通过使用静态和动态测试,定期检查并发现应用程序中的SQL注入漏洞。
通过使用参数化查询和对象关系映射(Object Relational Mappers,ORM),来避免和修复注入漏洞。此类查询通过指定参数的占位符,以便数据库始终将它们视为数据,而非SQL命令的一部分。
使用转义字符,来修复SQL注入漏洞,以便忽略掉一些特殊字符。 通过对数据库强制执行最小权限原则,来减缓SQL注入漏洞的影响。籍此,应用程序的每一个软件组件都只能访问、并仅影响它所需要的资源。
对访问数据库的Web应用程序采用Web应用防火墙(Web Application Firewall,WAF)。这有助于识别出针对SQL注入的各种尝试,进而防止此类尝试作用到应用程序上。
Dos防御
1.Code Review:尽量使用非贪婪匹配
2.代码扫描与正则性能测试
3.不使用用户提供的正则