在 Web 安全领域,攻击方式多种多样,以下是最常见且危害性较高的 15 种攻击类型,按照攻击原理、危害和防御措施分类整理:
一、注入类攻击
1. SQL 注入(SQL Injection)
-
原理:通过用户输入拼接 SQL 语句,篡改数据库查询逻辑。
sql
复制
java-- 用户输入: ' OR '1'='1 SELECT * FROM users WHERE username = '' OR '1'='1' AND password = '...'
-
危害:数据泄露、数据篡改、服务器沦陷。
-
防御:
- 使用参数化查询(Prepared Statements)
- ORM 框架(如 Sequelize、TypeORM)
- 最小化数据库权限
2. XSS(跨站脚本攻击)
-
原理:注入恶意脚本到网页中,在用户浏览器执行。
html
复制
xml<!-- 用户输入: <script>alert('XSS')</script> --> <div>{{ user_input }}</div> <!-- 未转义时触发 -->
运行 HTML
-
分类:
- 存储型(恶意脚本存数据库)
- 反射型(通过 URL 参数触发)
- DOM 型(纯前端漏洞)
-
防御:
- 输入输出转义(如
DOMPurify
库) - CSP 安全策略(
Content-Security-Policy
) - HttpOnly Cookie(防止窃取会话)
- 输入输出转义(如
3. 命令注入(Command Injection)
-
原理:通过系统命令拼接执行恶意指令。
bash
复制
makefile# 用户输入: ; rm -rf / ping $(user_input)
-
防御:
- 避免直接拼接命令(使用 API 替代)
- 白名单校验输入
二、会话与身份认证攻击
4. CSRF(跨站请求伪造)
-
原理:诱导用户点击链接,以用户身份发起恶意请求。
html
复制
arduino<img src="https://bank.com/transfer?to=hacker&amount=10000" width="0" height="0">
运行 HTML
-
防御:
- CSRF Token(同步令牌模式)
- SameSite Cookie 属性
- 关键操作需二次认证
5. 会话固定(Session Fixation)
-
原理:攻击者强制用户使用已知的 Session ID。
-
防御:
- 登录后重置 Session ID
- 绑定用户 IP/User-Agent
6. JWT 篡改
-
原理:修改 JWT 的 payload 或伪造签名。
-
防御:
- 使用强密钥(HS256 或 RS256)
- 校验签名和过期时间
- 敏感操作限制 Token 有效期
三、前端特定攻击
7. 点击劫持(Clickjacking)
-
原理:透明 iframe 覆盖按钮诱导点击。
html
复制
css<iframe src="malicious-site" style="opacity: 0; position: fixed;"></iframe>
运行 HTML
-
防御:
- HTTP 头
X-Frame-Options: DENY
- CSP 的
frame-ancestors
指令
- HTTP 头
8. CORS 滥用
-
原理:利用宽松的 CORS 配置窃取数据。
-
防御:
- 限制
Access-Control-Allow-Origin
为具体域名 - 避免使用
*
通配符
- 限制
9. WebSocket 劫持
-
原理:窃取或篡改 WebSocket 通信。
-
防御:
- 使用
wss://
(WebSocket over TLS) - 认证握手阶段
- 使用
四、协议与配置漏洞
10. 中间人攻击(MITM)
-
原理:拦截未加密的 HTTP 流量。
-
防御:
- 全站 HTTPS(HSTS 强制跳转)
- 证书钉扎(Certificate Pinning)
11. DNS 劫持
-
原理:篡改 DNS 解析结果。
-
防御:
- 使用 HTTPDNS
- 监控域名解析异常
12. 不安全的反序列化
-
原理:篡改序列化数据(如 JSON、XML)触发远程代码执行。
-
防御:
- 校验数据完整性(如签名)
- 避免直接反序列化为对象
五、其他高风险攻击
13. SSRF(服务端请求伪造)
-
原理:诱骗服务器访问内部资源。
复制
bashhttps://api.example.com/fetch?url=http://169.254.169.254/latest/meta-data
-
防御:
- 过滤请求目标(禁用内网 IP)
- 使用白名单域名
14. 文件上传漏洞
-
原理 :上传恶意文件(如
.php
、.jsp
)获取服务器权限。 -
防御:
- 校验文件类型(魔数检测,非扩展名)
- 存储到非 Web 目录
15. DoS/DDoS
-
原理:耗尽服务器资源(如 CC 攻击、Slowloris)。
-
防御:
- WAF(Web 应用防火墙)
- 限流策略(如 Nginx 的
limit_req
)
防御体系全景图
mermaid
复制
css
graph TD
A[输入验证] --> B[参数化查询]
A --> C[XSS 转义]
D[输出编码] --> E[CSP 策略]
F[会话安全] --> G[CSRF Token]
F --> H[HttpOnly Cookie]
I[HTTPS] --> J[HSTS]
K[最小权限] --> L[数据库只读账户]
关键工具推荐
工具 | 用途 |
---|---|
OWASP ZAP | 自动化渗透测试 |
Burp Suite | 手动安全测试 |
Snyk | 依赖库漏洞扫描 |
Nginx ModSecurity | WAF 防护 |
总结
- 开发阶段:遵循 OWASP Top 10 防护指南,代码审查时重点关注敏感操作。
- 部署阶段:启用安全头(如 CSP、HSTS)、定期更新依赖库。
- 监控阶段:日志审计 + 实时告警(如异常登录尝试)。
安全是一个持续的过程,没有 100% 的安全,只有不断提高的攻击成本。