这是我参与「 第五届青训营 」笔记创作活动的第9天
一、本堂课重点内容:
两个角度看web安全:
- 假如你是一个开发者 -- 防御
二、详细知识点介绍:
2.1 XSS的防御
- 永远不信任用户提交的内容
- 不要将用户提交的内容直接转换成DOM
工具:
- 主流框架默认防御 XSS
- google-closure-library 服务端(Node)
- DOMPurify
⚠️必须动态生成DOM,注意点:
- string-->Dom。对string进行转义
- 上传svg。对svg进行扫描,因为svg里允许插入js脚本,所以要进行扫描
- 自定义跳转连接。做好过滤
- 自定义样式
2.2 CSRF的防御
🌟 token
先有页面,后有请求
在服务器接收到一个合法页面请求时,服务器可以通过标识来判断是否是一个合法来源的请求。
🌟iframe
设置 X-Frame-Option:DENY(禁止作为Iframe)/SAMEORIGIN(允许同源)
-
限制
Origin,攻击者会使用同源请求来到达攻击。 -
使用
iframe来到达绕过Origin限制达到攻击。
2.3 Same-origin Policy 同源策略(SOP)
协议 + 域名 + 端口号
Content Security Policy(CSP)
- 哪些源(域名)被认为是安全的
- 来自安全源的脚本可以执行,否则直接抛出错误
- 对
eval + inline script说不
CSRF 的攻击是由于携带了用户 cookie,如果不携带 cookie,就从根源上解决了这种 CSRF 攻击。
三、课后个人总结:
-
安全无小事
-
使用的依赖(npm package,甚至是NodeJS)可能成为最薄弱的一环
- left-pad 事件
- eslint-scope事件
- event-stream事件
-
保持学习心态
四、引用参考:
- 课程课件(防御篇)
- juejin.cn/post/706811…
- juejin.cn/post/719611…
- ……