Injection Attack 注入攻击
把恶意代码插入到易受攻击应用里执行。Web 安全里最经典、危害最大的一类攻击。
为什么常年 OWASP Top
OWASP Top 10 自 2003 开始就一直把 injection 放榜首附近。根因从没变过——应用把用户输入当成代码来执行。
几种常见类型
| 类型 | 解释 |
|---|---|
| SQL Injection | 把 SQL 注入到数据库查询 ' OR 1=1-- |
| XSS (Cross-Site Scripting) | 把 JavaScript 注入到网页给别人执行 |
| Command Injection | 把 shell 命令注入到系统调用 |
| LDAP Injection | 注入 LDAP 查询 |
| XXE | XML 外部实体注入 |
| NoSQL Injection | MongoDB / Elasticsearch 这类 |
| Template Injection (SSTI) | 注入 Jinja2 / Twig 模板表达式 |
经典案例
-- 应用代码:
"SELECT * FROM users WHERE name = '" + input + "'"
-- 用户输入:
' OR '1'='1'; DROP TABLE users;--
-- 结果: 整张表没了怎么防
- Prepared statements / 参数化查询 —— 把数据和代码分开,根本解
- Input validation —— 白名单优先
- Output encoding —— XSS 防御核心
- 最小权限 —— 数据库账号别给 DROP
- WAF —— 兜底,不能当主防御