这是我参与「第四届青训营 」笔记创作活动的第34天
作为攻击方
XSS攻击
即为跨站脚本攻击XSS(Cross Site Scripting),如果在页面中注入Script脚本代码,而开发者盲目信任用户的提交内容,则会达成攻击效果。
特点
- 通常从UI难以感知
- 窃取用户信息
- 绘制一些UI(如弹窗),依次来骗取其他用户一些数据
分类
- Stored XSS(存储型)
- Reflected XSS(反射型)
- DOM-based XSS(DOM型)
- Mutation-based XSS(突变型)
CSRF攻击
即为跨站域请求伪造(Cross Site Request Forgery),在用户不知情的情况下,利用用户cookie,构造指定的HTTP请求,窃取修改用户信息。
分类
- GET类型
- POST类型
Injection
分类
- SQL Injection:把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
- Command Injection:攻击者可以能够控制操作系统上的一些命令.
- SSRF:服务端伪造请求。
DoS
通过某种方式(构造特定请求),导致服务器资源被显著消耗,来不及响应更多请求,导致请求挤压,进而雪崩效应。
分类
- ReDoS:基于正则表达式
- Logical Dos分类:①耗时的同步,②数据库写入,③SQL join,④文件备份,⑤循环执行逻辑。
- DDoS;短时间内,来自大量僵尸设备的请求流量,服务器不能及时完成全部请求,导致请求堆积,进而雪崩效应,无法响应新请求。
关于DDoS特点
- 直接访问API
- 任意API
- 消耗大量带宽
中间人攻击(传输层)
- 明文传输
- 信息篡改不可知
- 对方身份未验证
作为防御者
对策XSS
不要将用户提交数据直接转化为DOM
现有工具
前端:
- 主流框架默认防御XSS
- google-closure-library
服务端(Node):
DOMPurify
用户需求必须生成DOM怎么办
- 将string转为DOM
- 上传svg
- blob动态生成script
- 自定义跳转链接
- 自定义样式
对策CSRF
要求同源即可
CSP
- 哪些源(域名)被认为是安全的
- 来自安全源的脚本可以执行,否则直接抛错
- 对eval + inline script说不
防御措施
- Origin+Referrer
- token
- iframe
- anti-pattern
- 避免用户信息被携带
对策Injection
找到项目中查询SQL的地方使用prepared statement
防御DoS
- 代码扫描+正则性能测试
- 限流
4. HTTPS