2

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

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

我不是 RPG 程序员,不知道将 SQL 注入代码的风险如何,也不知道 JTOpen API 是否能阻止此类攻击。

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

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

4

2 回答 2

1

我不是 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

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

于 2011-03-04T14:33:12.383 回答
1

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

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

于 2011-03-04T13:54:56.607 回答