Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SQL注入-MySQLSyntaxErrorException_Java_Mysql_Sql_Jdbc_Sql Injection - Fatal编程技术网

Java SQL注入-MySQLSyntaxErrorException

Java SQL注入-MySQLSyntaxErrorException,java,mysql,sql,jdbc,sql-injection,Java,Mysql,Sql,Jdbc,Sql Injection,我正试图用SQL注入我的一个应用程序,以完成一个项目所需的编写工作 我使用了以下语句: Statement statement = conn.createStatement(); String insertTableSQL = "INSERT INTO activity (activity_name, user_id, category_id, started, completed) VALUES ('" + activityForm.getName() + "', '" + user.getI

我正试图用SQL注入我的一个应用程序,以完成一个项目所需的编写工作

我使用了以下语句:

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);
然后,当我将以下内容放入其中一个表单输入(在本例中为活动名称输入)时:

活动名称';落桌学生--

我得到以下错误:

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中语句的工作方式和正在解析的查询的其余部分

谢谢

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

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

当您连接到JDBC数据源时,必须通过在JDBC URL中放置
allowMultiQueries=true
来显式允许多查询

另见


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

我想用SQL注入它。这就是重点。我只是在测试。啊,我不知道。太棒了,谢谢!