防止Java程序中的SQL注入攻击
P粉328911308
P粉328911308 2023-10-20 20:06:17
0
2
740

我必须向我的 java 程序添加一条语句来更新数据库表:

String insert =
    "INSERT INTO customer(name,address,email) VALUES('" + name + "','" + addre + "','" + email + "');";

我听说这可以通过 SQL 注入来利用,例如:

DROP TABLE customer;

我的程序有一个 Java GUI,所有名称、地址和电子邮件值均从 Jtextfields 检索。我想知道黑如何将以下代码(DROP TABLE customer;)添加到我的插入语句中以及如何防止这种情况。

P粉328911308
P粉328911308

全部回复(2)
P粉194919082

例如:

name = "'); DROP TABLE customer; --"

会将此值插入到插入中:

INSERT INTO customer(name,address,email)     VALUES(''); DROP TABLE customer; --"','"+addre+"','"+email+"');

使用准备好的语句和 SQL 参数(来自 Matt Fellows 的“窃取”示例):

String insert = "INSERT INTO customer(name,address,email) VALUES(?, ?, ?);";
PreparedStament ps = connection.prepareStatment(insert);

还要解析此类变量的值,并确保它们不包含任何不允许的字符(例如名称中的“;”)。

P粉030479054

您需要使用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();

这将防止注入攻击。

黑客将其放入其中的方式是,如果您插入的字符串来自某处的输入 - 例如网页上的输入字段,或者应用程序或类似应用程序中表单上的输入字段。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!