搜索
防止Java程序中的SQL注入攻击
P粉328911308
P粉328911308 2023-10-20 20:06:17
[MySQL讨论组]

我必须向我的 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();

这将防止注入攻击。

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号