Web安全(防御篇) | 青训营笔记

134 阅读2分钟

这是我参与「第五届青训营」笔记创作活动的第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事件。

此外,还需要始终保持学习的心态。