本文へスキップ

FE SUBJECT A

基本情報技術者 科目Aの問題解説:SQLインジェクション対策として最も効果的なものはどれか。

テクノロジ系 標準 fe_a_s043_q009

問題

SQLインジェクション対策として最も効果的なものはどれか。

  1. エラーメッセージの詳細表示
  2. 入力文字数の制限
  3. プレースホルダ(バインド変数)を使用したSQL文の組立て(正解)
  4. HTTPSの導入
出典:オリジナル問題|参考範囲:試験要綱Ver.5.5 / FEシラバスVer.9.2 科目A範囲

正解と解説

正解:プレースホルダ(バインド変数)を使用したSQL文の組立て

正解はウ:この問題は、SQLインジェクションの根本対策を問う論点です。SQLインジェクションは、入力値をSQL文の一部として不正に解釈させ、データベースを意図しない形で操作する攻撃です。最も効果的な対策は、プレースホルダやバインド変数を用いて、SQL文の構造と入力データを分離することです。

なぜ有効か:例えば、利用者名をSQL文字列へ直接連結すると、攻撃者の入力がSQL構文として解釈される危険があります。プリペアドステートメントを使えば、入力値はあくまで値として扱われるため、構文を改変されにくくなります。

誤りの選択肢:イの入力文字数制限やアのエラー表示制御も補助的対策にはなり得ますが、根本対策ではありません。エのHTTPSは通信路の暗号化であり、SQLの組立て不備は防げないと覚えておくとよいでしょう。

他の選択肢はなぜ違う?

  • エラー詳細の表示はむしろ攻撃者へのヒントになる。
  • 文字数制限だけでは攻撃文字列を防ぎきれない。
  • HTTPSは通信の暗号化で、SQL文の構造汚染は防げない。

この問題について

出典:オリジナル問題|参考範囲:試験要綱Ver.5.5 / FEシラバスVer.9.2 科目A範囲

IPAが公開するシラバス・試験範囲・公開問題の出題形式を参考にした独自作成問題。公式問題・過去問題の転載ではありません。

公式試験問題、過去問題、公式サンプル問題、市販教材の問題文を転載したものではありません。

参考範囲: シラバスVer.9.2参考

参考文献・出典(公式情報)

RELATED

関連問題