这是我参与「第四届青训营 」笔记创作活动的第10天
前端基础班第9节:Web开发的安全之旅(下)。
Web开发的安全之旅(上)|青训营笔记 - 掘金 (juejin.cn)
(接上篇)
2.防御篇
(1)XSS
- 永远不要相信用户的提交内容
- 不要将用户提交内容直接转换成DOM
- 防御XSS的现成工具:
-
前端:-
主流框架默认防御XSS -
google-closure-library
-
-
服务端(Node):-
DOMPurify
-
-
- 注:
(1)如果用户需求必须动态生成DOM
1.string->dom :对string转义
2.上传svg:扫描svg文件
3.避免自定义跳转链接
4.自定义样式
(2)同源策略Same-origin Policy
(3)内容安全策略Content Security Policy(CSP)
- 哪些源(域名)被认为是安全的
- 来自安全源的脚本可以执行,否则直接抛错
- 对eval+inline script 说no
- 例:
(2)CSRF的防御
- token:
- 机制:
- iframe攻击
- anti-pattern
数据和隐私有可能泄露:
- SameSite Cookie
从根源上预防了CSRF
限制了domain:
SameSite vs CORS
(3)Injection的防御
- 找到项目中查询SQL的地方
- 使用prepared statement
(4)防御DoS
1.Regex DoS
- 避免贪婪匹配
- 代码扫描+正则性能测试
- 拒绝用户提供的使用正则
2.DDoS
- 流量治理
- 负载均衡
- API网关
- CDN
- 快速自动扩容
- 非核心服务降级
3.传输层--防御中间人
-
HTTPS的一些特性:
- 可靠性:加密
- 完整性:MAC验证
- 不可抵赖性:数字签名
-
HSTS: