Jdbc 修改代码以防止SQL注入

Jdbc 修改代码以防止SQL注入,jdbc,Jdbc,SQL注入示例 以下用于执行登录功能的Java servlet代码通过接受用户输入而不执行适当的输入验证或转义元字符来说明该漏洞: String sql = "select * from user where username='" + username +"' and password='" + password + "'"; stmt = conn.createStatement(); rs = stmt.executeQuery(sql); if (rs.next()) { loggedI

SQL注入示例

以下用于执行登录功能的Java servlet代码通过接受用户输入而不执行适当的输入验证或转义元字符来说明该漏洞:

String sql = "select * from user where username='" + username +"' and password='" + password + "'";
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
if (rs.next()) {
loggedIn = true;
    out.println("Successfully logged in");
} else {
    out.println("Username and/or password not recognized");
}
================


现在,请告诉我如何修改此代码,使其不受SQL注入的影响

您可以通过清除
用户名
密码
来执行此操作,这样它们就不会包含危险字符,无论是转义字符还是删除字符


可能会更好地解释这个问题。

您可以通过清除
用户名
密码
来做到这一点,这样它们就不会包含危险字符,可以通过转义或删除它们


可能会更好地解释问题。

您需要使用
PreparedStatement
类并添加参数


请参阅文档。

您需要使用
PreparedStatement
类并添加参数


请参阅文档。

使用准备好的语句而不是构建自己的查询字符串:

使用准备好的语句而不是构建自己的查询字符串:

如果在运行时为特定sql查询提供值,则应使用准备好的语句


此外,您最好使用form tag(在例如index.html、login.jsp等的查看页面中)方法作为POST,而不是克服SQL注入的问题如果您在运行时为特定SQL查询提供值,则应使用preparedStatement


此外,您应该更好地使用表单标记(在例如index.html、login.jsp等的查看页面中)方法作为POST,而不是克服SQL注入的困难

我希望您没有使用Java 1.4!哎呀!我只是用谷歌搜索了我手机上的链接并发布了它(没想到要检查它是否来自Javadoc的正确版本)。我刚刚更新了答案。我希望你没有使用Java1.4!哎呀!我只是用谷歌搜索了我手机上的链接并发布了它(没想到要检查它是否来自Javadoc的正确版本)。我刚刚更新了答案。