热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

java–如何在动态查询中保护自己免受SQL注入?

我的应用程序获取对数据库的String对象查询.例如.字符串查询=EMAIL,如’%test%’,USER_NAME类似’%user%’.查询是动态构建的,我不知道它的结构,因此我无法利用Pr

我的应用程序获取对数据库的String对象查询.例如.字符串查询= EMAIL,如’%test%’,USER_NAME类似’%user%’.查询是动态构建的,我不知道它的结构,因此我无法利用PrepareStatement.有谁知道在这种情况下防止SQL注入的方式?

数据库:Oracle
语言:Java 1.6

请帮忙.

解决方法:

即使您不知道结构,也可以使用PreparedStatement.让我用一个简单的例子来演示:

List arguments = new ArrayList();
String sql = "SELECT * FROM user WHERE someCOndition= ?";
if (queryOnEmail) {
sql = sql + " AND email LIKE ?";
arguments.add(email);
}
if (queryOnUserName) {
sql = sql + " AND user_name LIKE ?";
arguments.add(userName);
}
PreparedStatement stmt = con.prepareStatement(sql);
int i = 1;
for(Object o : arguments) {
stmt.setObject(i, o);
i++;
}

当然,您可以将此SQL参数构造包装到其自己的类中以简化其用法.


推荐阅读
author-avatar
小情人恩恩baby
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有