CyberGlossary

攻击与威胁

SQL 注入

别称: SQLi

定义

一种将攻击者控制的 SQL 片段注入到由不受信任输入构造的查询中的攻击,可导致数据泄露、篡改乃至完全控制数据库。

SQL 注入(SQLi)发生在应用程序将用户输入拼接到 SQL 语句中而未将代码和数据正确分离时。通过提交诸如 ' OR 1=1-- 或 UNION SELECT 的载荷,攻击者可以绕过身份验证、读取任意数据表、修改或删除记录,并在配置不当的数据库上执行系统命令。常见变体包括基于报错、基于 UNION、布尔盲注、时间盲注以及带外注入。它长期位列 OWASP Top 10。根本的防御措施是使用绑定变量的参数化查询(预编译语句),并结合输入校验、最小权限数据库账号、加固的 ORM,以及作为补偿控制的 Web 应用防火墙(WAF)。

示例

  • 登录表单中提交 username='admin'--' 即可在无密码的情况下登录。
  • 搜索接口通过构造的 UNION SELECT 泄露 password_hash 列。

相关术语