这是我参与「第五届青训营」笔记创作活动的第11天。
本笔记对应的是青训营关于Web安全部分中针对常见攻击方法的防御方法知识。
1 课程内容概括
本部分针对Web安全面临的常见攻击手段,做出了相应的防御方法介绍。
2 XSS防御
永远不信任用户的提交内容,不要将用户提交的内容直接转化为DOM。
前端的主流框架默认防御XSS。google-closure-library。
服务端Node可以使用DOMPurify。
3 同源策略防御
协议、域名、端口均相同时才为同源。
4 内容安全策略CSP防御
主要关注哪些源(域名)是安全的。来自安全源的脚本可以执行,否则抛出异常。不要使用eval + inline script。
5 CSRF防御
发现伪造请求、异常来源,限制请求来源、限制伪造请求。
除了使用Origin + Referer,还可以使用其他判断请求是否来自于合法来源的方式。
SameSite Cookie
6 注入(Injection)防御
SQL注入:找到项目中SQL查询位置,使用prepared statement
最小权限原则、建立允许名单、过滤、对URL类型参数进行协议、域名、IP等限制
7 拒绝服务(DoS)防御
Regex Dos
Code Review
代码扫描、正则性能测试
拒绝用户提供的使用正则
DDoS可使用如负载均衡、API网关、CDN的流量治理手段,也可以使用快速自动扩容、非核心服务降级。核心在于过滤和抗量。
8 中间人攻击防御
HTTPS具有对中间人攻击防御的能力,可以使用HSTS,将HTTP主动升级到HTTPS。
通过SRI判断静态资源是否被劫持篡改
9 总结与思考
本笔记涉及到Web安全的防御方式内容,开发人员开发时应该注意这些防御方法。安全无小事。同时还需要注意使用的依赖也可能成为薄弱环节,比如此前在JS课程中已经介绍过的left-pad事件。
此外,还需要始终保持学习的心态。