SQL 注入是什么?原理与防护

SQL 注入常年稳居 OWASP Top 10 前列,是 Web 应用最经典的漏洞之一——因为它直接触碰数据库,轻则拖库,重则拿到系统权限。

它是什么

开发者把用户输入直接拼进 SQL 语句时,攻击者可以通过精心构造的输入改变查询逻辑。例如登录框输入 ' OR '1'='1,可能让校验"恒真"从而绕过认证。

常见类型

1. 联合查询注入(UNION):拼接查询结果回显数据;2. 布尔盲注:通过页面真/假差异逐字符猜解;3. 时间盲注:用延迟函数确认条件并拖数据;4. 报错注入:利用数据库报错回显信息;5. 堆叠注入:分号后追加多条语句。

危害等级

能读到数据库内容的注入,在多数 SRC 中对应高危到严重(尤其涉及用户、订单、资金数据时)。拿到数据库权限的注入为严重。

怎么防

1. 参数化查询/预编译(首选,从根上消除拼串);2. 输入校验:类型/长度/白名单,但只做纵深不单靠它;3. 最小权限:应用账号不用 DBA 权限,库表按需授权;4. 隐藏错误细节,不向用户回显原始报错;5. 部署 WAF 做第一道过滤,但不能替代代码修复;6. 上线前做安全检测,把这类问题堵在发布前。

—— 想确认自家系统有没有注入类问题?预约安全检测。