这是我参与「第五届青训营 」笔记创作活动的第15天
重点内容
- XSS 的防御
- 防御 CSRF 的正确姿势
- 防御 DoS
- 防御 Injection
- 防御中间人
XSS 的防御
- 永远不信任用户的提交内容
- 不要将用户提交内容直接转换成DOM
现成工具
- 前端
- 主流框架默认防御 XSS
- google-closure-library
- 服务端(Node)
- DOMPurify
耗子尾汁
- 用户需求 不讲武德,必须动态生成DOM
- string -> DOM
- 上传 svg
- Blob 动态生成 script
- 自定义跳转链接
- 自定义样式
Same-origin Policy
Content Security Policy(CSP)
- 服务器的响应头部
- 浏览器 meta
防御 CSRF 的正确姿势
token
- 用户绑定:攻击者也可以是注册用户 === 可以获取自己的token
- 过期时间:前向保密
iframe 攻击
anti-pattern
GET !== GET + POST
避免用户信息被携带:SameSite Cookie
SameSite vs CORS
SameSite demo
防御 DoS
Regex DoS
Logical DoS
DDoS
防御 Injection
- 找到项目中查询SQL地方
- 使用 prepared statement
Injection beyond SQL
防御中间人
HTTPS 的一些特性
- 此处为 TLS 1.2
HTTPS - 完整性
数字签名
- 证书
- 证书demo
- 当签名算法不够健壮时:
HTTP Strict - Transport-Security(HSTS)
将HTTP主动升级到HTTPS
Subresource Integrity(SRI)
- demo 标签hash(原始内容hash) vs 实际内容hash