SQL注入

380 字

SQL注入

SQL 注入的核心是把用户输入拼进数据库语句,使数据被当成 SQL 代码解释。它是“数据和指令混在一起”的典型问题。

会出现在哪里

登录、搜索、筛选、排序、分页、详情查询、后台报表、导出接口都可能接触数据库。除了表单字段,URL 参数、JSON 字段、Header、Cookie 中的值也可能被带入查询。

现象 说明
报错差异 数据库错误、字段名、表名暴露
页面差异 条件变化导致结果真假不同
时间差异 数据库执行耗时出现可控变化
数据异常 查询到不属于当前用户的数据

常见分类

SQL 注入可按表现分为报错注入、联合查询注入、布尔盲注、时间盲注和堆叠查询注入。初学时不必先背 payload,先理解:攻击者试图改变原本查询的语义。

防护要点

使用参数化查询或 ORM 的安全绑定能力,不拼接 SQL 字符串。排序字段、表名这类不能参数化的位置使用白名单映射。数据库账号最小权限,生产环境关闭详细错误回显,并记录异常查询行为。

Licensed under CC BY-NC-SA 4.0