我考试中一个非常基本的SQL注入问题-我的“怪异”解决方案会起作用吗?

问题描述 投票:1回答:2

((我不是英语母语人士,请原谅我的错误)。>>

被提供了一些Java代码,这些代码负责构建简单的SQL查询。任务是将String参数赋予两个参数usernamepassword,以删除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参数赋予两个参数...

sql security code-injection
2个回答
3
投票

首先,此代码:


0
投票

“ SELECT * FROM user_table WHERE id =” +用户名+“ AND pw =” +密码;

© www.soinside.com 2019 - 2024. All rights reserved.