(я не являюсь носителем английского языка sh, прошу прощения за ошибки).
Ему был дан код Java, который должен был создать простой запрос SQL. Задача состояла в том, чтобы дать строковые аргументы двум параметрам username
и password
, чтобы удалить user_table
.
ПРИМЕЧАНИЕ: мы не получили код SQL, поэтому не беспокойтесь о точном синтаксисе SQL. Это не имеет значения.
Я не могу вспомнить точный код, но он был очень похож на это:
function(String username, String password)
{
String sql = "SELECT * FROM user_table WHERE id =" + username + "AND pw =" + password;
//invoke the SQL query with this String
}
Теперь лучшим решением здесь, вероятно, было бы:
username = "Oscar"
password = "123; DROP TABLE user_table"
Но вот что я написал:
username = "Oscar; DROP TABLE user_table; 1=1"
password = "123"
Проблема, которую я вижу со своим решением, состоит в том, что самой последней командой SQL будет 1=1 AND pw = 123
, которая является просто логическим значением Выражение в коде ничего не делает. Он не назначен ни для чего или служит для чего-либо условием.
Не приведет ли это к ошибке во время выполнения? И если да, будут ли выполняться предыдущие команды?