『Java安全』SQL安全-ORDER BY注入
文章目录
- 原理
- 防御
-
- 关键字符串过滤
- 使用列号排序
- 完
原理
SQL中:ORDER BY执行排序后面需要指定列名,该列名是不能被引号包含的否则就会被认为是一个字符串。
而PrepareStatment使用占位符传递参数时,会用单引号包裹参数,因此不能使用预编译
所以使用ORDER BY要搭配字符串拼接上列名
字符串拼接就可能会造成SQL注入
防御
关键字符串过滤
限制拼接内容
使用列号排序
非得用PrepareStatment预编译就用列号进行排序
String sql1 = "select * from testtest order by ?";
PreparedStatement pre1 = conn.prepareStatement(sql1);
pre1.setInt(1, 2);
完
欢迎在评论区留言,欢迎关注我的CSDN @Ho1aAs