2

JTOpen を使用して AS/400 マシンに接続しています。このタイプの統合を使用する場合に SQL インジェクションの脆弱性が発生するリスクを解決しようとしています。

jdbc 接続ではなく、API の呼び出しプログラム部分のみを使用していることに注意してください。

私は RPG プログラマーではなく、コードへの SQL インジェクションのリスクについての知識もありません。また、JTOpen API がこの種の攻撃を阻止するかどうかも知りません。

ストアド プロシージャを使用していない場合でも、RPGLE プログラムに SQL インジェクションを実行できる可能性があることを少しグーグルで調べたところわかりました。だから私の質問は次のとおりです。これは JTOpen API でも可能ですか。

JTOpen API へのすべての呼び出しで SQL インジェクションをプログラムでチェックする必要がありますか?

4

2 に答える 2

1

JDBC を使用していない場合、SQL インジェクションをチェックする必要がある唯一の理由は、JT400 を使用してホスト上で呼び出されるプログラムで動的 SQL を使用している場合です。

ホスト上で実行されているプログラムが動的 SQL を使用しない場合、リスクはまったくありません。

于 2011-03-04T13:54:56.607 に答える
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 に答える