| 根治手段 | 占位符绑定参数(? 或命名占位符) |
|---|---|
| 例外位置 | 表名/列名/排序方向用白名单映射 |
| 复查点 | ORM 原生 SQL、拼接的分页与动态条件 |
修复示意(以伪代码说明结构)
修复示意(以伪代码说明结构)
不安全:语句 = 'SELECT * FROM orders WHERE id = ' + 用户输入
安全: 语句 = 'SELECT * FROM orders WHERE id = ?',以参数绑定用户输入
动态排序:
不安全:ORDER BY ' + 用户输入
安全:ORDER BY 白名单映射表[用户输入](仅映射到固定列名)字符串转义与黑名单过滤只能作为临时缓解,不能替代参数化;换数据库方言时过滤规则往往失效。