首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java注入- MySQLSyntaxErrorException

Java注入- MySQLSyntaxErrorException
EN

Stack Overflow用户
提问于 2018-04-05 18:34:38
回答 1查看 258关注 0票数 1

我正在尝试将我的一个应用程序注入到我需要为项目编写的应用程序中。

我使用了以下声明:

代码语言:javascript
复制
Statement statement = conn.createStatement();
String insertTableSQL = "INSERT INTO activity (activity_name, user_id, category_id, started, completed) VALUES ('" + activityForm.getName() + "', '" + user.getId() + "', '" + category.getId() + "', '" + 0 + "', '" + 0 + "')";
System.out.println(insertTableSQL);
statement.executeUpdate(insertTableSQL);

然后,当我将以下内容放入表单输入(在本例中为活动名称输入)时:

( ActivityName');丢桌子的学生;--

我得到以下错误:

代码语言:javascript
复制
INSERT INTO activity (activity_name, patient_id, category_id, started, completed) VALUES ('ActivityName'); DROP TABLE STUDENTS; --', '1', '1', '0', '0')
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DROP TABLE STUDENTS; --', '1', '1', '0', '0')' at line 1

我似乎找不到一个方法来避免这个错误,所以我希望有人有一些想法。

我猜这个错误是因为java中的way语句和正在解析的其余查询而发生的。

谢谢

编辑:我知道我应该使用准备好的语句,我知道。我的应用程序在JPA中使用ORM。对于大学,我只是在测试SQL注入是如何工作的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-05 18:47:47

默认情况下,MySQL JDBC驱动程序不允许一个执行运行多个SQL语句。这意味着您显示的SQL注入测试的类型无法执行。这是件好事!

当连接到JDBC数据源时,您必须显式地允许多个查询,方法是将allowMultiQueries=true放在JDBC URL中。

另见Multiple queries executed in java in single statement

还有其他类型的SQL注入不运行其他语句。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49679218

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档