学无先后,达者为师

网站首页 java综合 正文

『Java安全』SQL安全-ORDER BY注入

作者:Ho1aAs 更新时间: 2022-02-05 java综合

原理

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

原文链接:https://blog.csdn.net/Xxy605/article/details/122276525

栏目分类
最近更新