安全问题:Java代码中防止SQL注入的方法示例
在Java编程中,防止SQL注入(又称预编译)的主要方法是使用PreparedStatement对象。
以下是一个示例:
// 假设你有一个User类,其中包含username属性
import java.sql.*;
public class SqlInjectionPrevention {
public static void main(String[] args) {
// 创建用户实例
User user = new User("testuser", "password");
try (Connection conn = DriverManager.getConnection("your_database_url", "username", "password");
PreparedStatement pstmt = conn.prepareStatement("INSERT INTO users (username, password) VALUES (?, ?)")) {
// 使用预编译的SQL来设置值,防止注入
pstmt.setString(1, user.getUsername());
pstmt.setString(2, user.getPassword());
pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
System.out.println("Error occurred: " + e.getMessage());
}
}
// 假设你有一个User类,包含username属性
class User {
private String username;
private String password;
// getters and setters
}
}
在这个示例中,我们使用PreparedStatement来插入数据。这种方式可以防止SQL注入攻击,因为我们传递的是预定义的参数值,而不是用户输入的内容。
还没有评论,来说两句吧...