简介
SQL注入按数据类型可以分为
- 数字型
- 字符型
- 搜索型
按提交方式可分为
- GET型
- POST型
- Cookie型
- HTTP请求头注入
按执行效果可分为
- 报错注入
- 联合查询注入
- 盲注
- 堆查询注入
解决方案
第一种方法是使用预编译的方式执行SQL语句,用java.sql.PreparedStatement
,执行进行变量绑定
Connection conn
PreparedStatement ps = conn.prepareStatement(sql)
其他方法还有:
- 对带入SQL语句中的外部参数进行转义或者过滤
- 对于整数,判断是否为[0-9]的值;其他限定值,也可以做合法性校验
- 对于字符串,对特殊字符进行转义,如吧单引号转为两个单引号,把双引号转为两个单引号