攻击与威胁
SQL 注入
别称: SQLi
定义
一种将攻击者控制的 SQL 片段注入到由不受信任输入构造的查询中的攻击,可导致数据泄露、篡改乃至完全控制数据库。
SQL 注入(SQLi)发生在应用程序将用户输入拼接到 SQL 语句中而未将代码和数据正确分离时。通过提交诸如 ' OR 1=1-- 或 UNION SELECT 的载荷,攻击者可以绕过身份验证、读取任意数据表、修改或删除记录,并在配置不当的数据库上执行系统命令。常见变体包括基于报错、基于 UNION、布尔盲注、时间盲注以及带外注入。它长期位列 OWASP Top 10。根本的防御措施是使用绑定变量的参数化查询(预编译语句),并结合输入校验、最小权限数据库账号、加固的 ORM,以及作为补偿控制的 Web 应用防火墙(WAF)。
示例
- 登录表单中提交 username='admin'--' 即可在无密码的情况下登录。
- 搜索接口通过构造的 UNION SELECT 泄露 password_hash 列。
相关术语
NoSQL 注入
针对文档型、键值型或图数据库的注入攻击,攻击者将运算符或 JavaScript 注入到查询对象中。
Command Injection
Command Injection — definition coming soon.
Parameterized Query
Parameterized Query — definition coming soon.
Input Validation
Input Validation — definition coming soon.
OWASP Top 10
OWASP Top 10 — definition coming soon.
Web 应用防火墙(WAF)
一种反向代理式的过滤器,通过检查 HTTP/HTTPS 流量,在请求到达应用之前阻断 SQL 注入、XSS、机器人滥用等 Web 攻击。