try { String sql; sql = "SELECT name,password FROM table1 where name='"+name1+"' and password='"+password1+"'"; ResultSet rs = stmt.executeQuery(sql); while(rs.next()){ String name = rs.getString("name"); String password = rs.getString("password"); if(name1.equals(name)&password1.equals(password)) { response.sendRedirect("Success.html"); return; } else { response.sendRedirect("DLSB.html"); return; } 这段代码有什么问题,具体解决办法
时间: 2024-01-29 09:02:42 浏览: 66
MySQL-JAVA.rar_java mysql_java+mysql_mysql_java
这段代码的问题可能是SQL注入攻击。SQL注入攻击是一种利用应用程序对用户输入数据的处理不当来实现攻击的技术。在这种情况下,攻击者可能会在输入框中输入恶意代码,从而导致您的应用程序执行除了原始意图之外的操作。
解决这个问题的最简单方法是使用参数化查询,而不是直接将用户输入与SQL查询字符串连接。这样可以确保输入被正确地转义,从而防止注入攻击。
以下是使用参数化查询的示例代码:
```
String sql = "SELECT name, password FROM table1 WHERE name = ? AND password = ?";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, name1);
pstmt.setString(2, password1);
ResultSet rs = pstmt.executeQuery();
if (rs.next()) {
response.sendRedirect("Success.html");
} else {
response.sendRedirect("DLSB.html");
}
```
此代码将用户输入作为参数传递给查询,而不是将其直接连接到查询字符串中。这样可以确保输入被正确地转义,从而防止注入攻击。
阅读全文