SQL注入原理与防御

SQL 注入完整指南:数字注入/字符注入/布尔盲注/时间盲注/联合查询、防御方法。

写在前面:合法学习边界

SQL 注入测试只在授权测试环境进行。

一、SQL 注入攻击链

SQL 注入攻击链
1
① 发现注入点 → ② 判断注入类型 → ③ 获取数据库信息 → ④ 读取数据 → ⑤ 写文件/执行命令

二、注入类型

1
2
3
4
数字注入:id=1 UNION SELECT...
字符注入:name=' UNION SELECT...
布尔盲注:id=1 AND 1=1 / AND 1=2
时间盲注:id=1 AND SLEEP(5)

三、防御加固

1
2
3
4
参数化查询(预处理语句)
ORM 框架(Hibernate/MyBatis)
WAF 规则拦截
最小权限原则

四、小结

SQL 注入的核心是用户输入被拼接到 SQL 语句中参数化查询是唯一有效的防御。