" + population); I can put"> " + population); I can put"> " + population); I can put" />

Как SQL-запрос SQL, использующий JDBC?

В моей программе Java появляются следующие строки кода:

stmt.executeQuery("SELECT * FROM metropolises WHERE metropolis =\"" + metropolis + "\" AND continent=\"" + continent + "\" AND population>" + population);

I can put anything in for metropolis, continent, and population via a GUI, but I can't seem to get it to work if I put metropolis = a, continent = b, and population is 2; DROP TABLE tablename;

Какие-либо предложения? Я пытаюсь DROP таблицы с именем metropolises, поэтому я могу лучше понять SQL-инъекцию.

0
nl ja de

2 ответы

Вы не указываете, какую марку базы данных вы используете (если тег «sql» не подразумевает Microsoft SQL Server). Итак, вот мой опыт w.r.t. MySQL:

По умолчанию драйвер JDBC MySQL будет выполнять только один оператор SQL для каждого вызова. Это хорошая идея для защиты от некоторых типов SQL-инъекций.

The JDBC driver has an optional connection property allowMultiQueries that you must set to allow semicolon-separated statements. See http://dev.mysql.com/doc/refman/5.5/en/connector-j-reference-configuration-properties.html

1
добавлено

Некоторые библиотеки баз данных не позволяют выполнять несколько запросов для каждого вызова (например, связывание PHP mysql). В тех случаях такой инъекции невозможно. К сожалению, я не знаю, верно ли это для JDBC, но это может быть причиной.

1
добавлено
JDBC - это только API , независимо от того, возможно ли это, зависит от конкретного драйвера. Это не «правда» или «ложь» для JDBC как такового
добавлено автор a_horse_with_no_name, источник
SqlCom.ru - Стиль жизни SQL
SqlCom.ru - Стиль жизни SQL
908 участник(ов)

Правила чата - https://t.me/sqlcom/88269 @sqlcom - основной канал (только MS SQL) @sql_ninja - второй канал (SQL вопросы начального уровня и свободное общение) @Gopnegbot - Викторина по SQL Server (наберите в привате /quiz). Предложения в @sql_ninja

SQL_Ninja
SQL_Ninja
340 участник(ов)

Правила чата - https://t.me/sqlcom/88269 @sqlcom - основной канал (только SQL) @sql_ninja - второй канал (SQL вопросы начального уровня и свободное общение) @Gopnegbot - Викторина по SQL Server (наберите в привате /quiz)