SQL 注入参考
常见攻击模式
-- 经典绕过
' OR '1'='1admin'--
' OR 1=1--
-- 联合查询
' UNION SELECT username,password FROM users---- 盲注
' AND SLEEP(5)--' AND 1=(SELECT CASE WHEN (1=1) THEN 1 ELSE 0 END)--
防护方法
| 参数化查询 | db.Query("SELECT * FROM users WHERE id=?", id) |
| ORM Usage | User.objects.filter(id=user_id) |
| 输入验证 | 查询前验证类型、长度、格式 |
| 最小权限 | 数据库用户应具有最小权限 |
| WAF | Web 应用防火墙过滤恶意查询 |