使用 JTOpen 连接到 AS/400 时存在 SQL 注入风险

发布于 2024-10-20 04:06:57 字数 325 浏览 12 评论 0原文

我们正在使用 JTOpen 连接到我们的 AS/400 机器,我正在尝试解决使用这种类型的集成时存在 SQL 注入漏洞的风险。

请注意,我们仅使用 API 的调用程序部分 - 而不是 jdbc 连接。

我不是 RPG 程序员,不了解将 SQL 注入到代码中的风险有多大,也不知道 JTOpen API 是否可以阻止此类攻击。

经过一番谷歌搜索后我发现,当 RPGLE 程序不使用存储过程时,可以对它们进行 SQL 注入。 所以我的问题是:这是否也可以通过 JTOpen api 来完成。

我们是否需要以编程方式检查对 JTOpen API 的所有调用中的 SQL 注入?

We are using JTOpen to connect to our AS/400 machine, and I'm trying to work out the risks of having SQL injection vulnearbility when using this type of integration.

Note that we are only using the call program part of the API - not the jdbc connection.

I am not a RPG programmer and do not have any knowledge of how the risks are in terms of getting SQL injection into the code, nor do I know if the JTOpen API stops these kinds of attacks.

I found out after a bit of googling that there is however possible to do SQL injections into RPGLE programs when they are'nt using stored procedures.
So my question is that: Is this possible to do through the JTOpen api as well.

Do we need to programmatically check for SQL injections in all calls to the JTOpen API's ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

等风来 2024-10-27 04:06:57

如果您不使用 JDBC,则需要检查 SQL 注入的唯一原因是您是否在使用 JT400 的主机上调用的程序中使用动态 SQL。

如果主机上运行的程序不使用动态SQL,那么就完全没有风险。

If you're not using JDBC, the only reason you would need to check for SQL injection is if you are using dynamic SQL in the programs called on the host using JT400.

If the programs running on the host don't use dynamic SQL, then there is no risk at all.

暖伴 2024-10-27 04:06:57

我不是 Java 专家,所以我在这里只使用伪代码。

根据我的理解,您可以使用动态 SQL,但不要将 where 语句连接在一起。

所以 string = "select * from table where key = " + id 是完全错误的。但是,您可以执行类似的操作,

string = "select * from table where key = @id";
build connection
add parameter to assign value to @id
execute command

但更好的选择是使用存储过程。

I am not a java guru so I will just use psuedo-code here.

Based on my understanding, you could use dynamic SQL but just don't concatenate your where statement together.

So string = "select * from table where key = " + id is completely wrong. You can, however, do something similar to

string = "select * from table where key = @id";
build connection
add parameter to assign value to @id
execute command

A better option though would be to use stored procedures.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文