((我不是英语母语人士,请原谅我的错误)。>>
被提供了一些Java代码,这些代码负责构建简单的SQL查询。任务是将String参数赋予两个参数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
,它只是一个布尔表达式,在代码中不执行任何操作。它没有分配给任何东西,也不作为任何条件。
这会导致运行时错误吗?如果是,是否仍然可以执行先前的命令?
((我不是英语母语人士,请原谅我的错误)。它提供了一些Java代码,这些代码负责构建简单的SQL查询。任务是将String参数赋予两个参数...
首先,此代码:
“ SELECT * FROM user_table WHERE id =” +用户名+“ AND pw =” +密码;