Java 程序中的 SQL 注入预防
在与数据库交互的 Java 程序中,预防 SQL 注入攻击至关重要。当不受信任的输入插入 SQL 查询时,就会发生 SQL 注入攻击,攻击者可以执行恶意代码或操纵数据。
考虑以下将数据插入数据库表的 Java 代码:
String insert = "INSERT INTO customer(name,address,email) VALUES('" + name + "','" + addre + "','" + email + "');";
此代码容易受到 SQL 注入攻击,因为这些值直接插入到查询中。例如,攻击者可以输入以下字符串作为名称:
DROP TABLE customer;
这将导致整个客户表被删除。
要防止这种攻击,请使用PreparedStatement。 PreparedStatement 对象使用占位符作为查询参数,然后再填充这些占位符。这种分离可以防止不受信任的输入直接插值到查询中。
以下代码演示了PreparedStatement的使用:
String insert = "INSERT INTO customer(name,address,email) VALUES(?, ?, ?);"; PreparedStatement ps = connection.prepareStatement(insert); ps.setString(1, name); ps.setString(2, addre); ps.setString(3, email); ResultSet rs = ps.executeQuery();
此代码可以防止 SQL 注入,因为值是单独设置的从查询中。攻击者无法再通过插入恶意输入来改变查询的意图。
以上是PreparedStatement 如何保护 Java 应用程序免受 SQL 注入攻击?的详细内容。更多信息请关注PHP中文网其他相关文章!