[ Web 开发安全 - 防御篇 | 青训营笔记]

68 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的的第7天。

XSS的防御

永远不要相信用户提交的内容,不要将用户提交的内容直接转换成DOM。使用前端主流框架google-closure-libarary和服务端(Node)的DOMPurify来构成防御。对用户提交的内容进行审核,再对动态输出的页面的内容进行html编码,使恶意脚本代码无法在浏览器中执行。

N8RMBTM({G(J6E(M(PRTXIL.png

CSRF防御

当检测到异常访问时,限制访问

因为攻击者也有可能是注册用户,所以这里的token往往和具体用户绑定,同时token需要一个过期时间

9QJ06TWD}SDNI9C(~AZ9`J6.png

注入防御

通过使用静态和动态测试,定期检查并发现应用程序中的SQL注入漏洞。

通过使用参数化查询和对象关系映射(Object Relational Mappers,ORM),来避免和修复注入漏洞。此类查询通过指定参数的占位符,以便数据库始终将它们视为数据,而非SQL命令的一部分。

使用转义字符,来修复SQL注入漏洞,以便忽略掉一些特殊字符。 通过对数据库强制执行最小权限原则,来减缓SQL注入漏洞的影响。籍此,应用程序的每一个软件组件都只能访问、并仅影响它所需要的资源。

对访问数据库的Web应用程序采用Web应用防火墙(Web Application Firewall,WAF)。这有助于识别出针对SQL注入的各种尝试,进而防止此类尝试作用到应用程序上。

Dos防御

1.Code Review:尽量使用非贪婪匹配

2.代码扫描与正则性能测试

3.不使用用户提供的正则