欢迎访问宙启技术站
智能推送

使用Java编写防止SQL注入的函数

发布时间:2023-09-14 19:42:03

在Java中,可以使用预编译的SQL语句和参数绑定来防止SQL注入。以下是一个示例函数,用于执行SQL查询并防止SQL注入。

import java.sql.*;

public class SQLInjectionSafeFunction {

    public static void main(String[] args) {
        // 使用预编译的SQL语句来查询用户输入的用户名和密码
        String username = userInput();
        String password = userInput();

        String sql = "SELECT * FROM users WHERE username = ? AND password = ?";

        try(Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "username", "password");
            PreparedStatement statement = connection.prepareStatement(sql)) {

            statement.setString(1, username);
            statement.setString(2, password);

            ResultSet resultSet = statement.executeQuery();

            // 处理查询结果
            while (resultSet.next()) {
                System.out.println("User found: " + resultSet.getString("username"));
            }

        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    // 模拟用户输入
    private static String userInput() {
        return "user'; DROP TABLE users; --";
    }
}

在上面的示例中,我们首先定义了一个包含预编译占位符的SQL语句。然后,我们使用setString()方法将用户输入的值设置到预编译的语句中。这样,即使用户输入了恶意的SQL代码,它也将作为字符串处理,而不会被解释为SQL命令。最后,我们通过executeQuery()方法执行查询,并处理查询结果。

通过使用预编译的语句和参数绑定,我们可以有效地防止SQL注入攻击。