我编写了以下部分,它是一个带有两个STRING参数的Java方法login和pass,表示用户的登录名和密码,以检查用户是否在数据库表中找到。JDBC ResultSet SQL错误
Statement stmt = connection.createStatement();
ResultSet rs = statement.executeQuery ("SELECT * FROM users WHERE username = '"
+ login + "' AND passwd = '" + pass + "'");
测试时代码正常工作。我在一本书中读到,有些情况下可能会产生SQL错误,但并未提及上述代码可能导致SQL错误的情况。你能否简要介绍一下这些情况?还有,我该如何编写一个能够防止发生这种错误的代码版本?
例如: '字符串登录=“用户名“;删除数据库;提交”;' –
@BorisPavlović好的吓人例如 – Zohaib
@Zohaib:但这取决于数据库很多。 Boris的攻击不适用于Oracle或PostgreSQL,因为它们不允许在单个'executeQuery()'调用中使用多个语句。我认为(只有?)SQL Server和MySQL可以针对特定的攻击行事。 –