• 締切済み

Pro*C 静的SQLでもSQLインジェクション対策は必要ですか?

Oracle Pro*Cで静的SQLを利用している場合であっても、 SQLインジェクション対策は必要でしょうか? また対策が必要な場合、どう対処すれば良いのでしょうか?

みんなの回答

回答No.2

確証はありませんが、プリペアドクエリとして動作する為、 SQLインジェクション対策は必要ないように感じます。 動作して確認する環境が言えないので定かではありませんが・・・。 一度単純なファイルを作ってみて、どういう風に動くか 確認してみてはいかがでしょう?

sueo777
質問者

お礼

はい、実際に試してみたところ、問題はなさそう (1つの値として扱われてそう)なのですが。 Pro*C(埋め込みSQL)に関する情報が少なく、 いまいちはっきりしないのです。

回答No.1

Oracle Pro*Cは利用した事がないので何とも分かりませんが、 静的、つまり生成するSQL文は全てリテラル文字列で、外部からの干渉を受ける立場にないのに、 どうやってSQL文に文字を注入するのでしょうか?

sueo777
質問者

お礼

すみません、静的SQLという表現はよくなかったですね。 例えば以下のような埋め込みSQLで、ホスト変数(in_pass)に どのような値が設定されても、1つの値として扱われるという 確証を得たいのです。 EXEC SQL SELECT user, pass INTO :str_user, :str_pass FROM foo WHERE pass = :in_pass; in_pass ← "' OR 'A'='A" でも大丈夫?

関連するQ&A