FE SUBJECT A
基本情報技術者 科目Aの問題解説
問題
SQLインジェクション対策として最も効果的なものはどれか。
- ア エラーメッセージの詳細表示
- イ 入力文字数の制限
- ウ プレースホルダ(バインド変数)を使用したSQL文の組立て
- エ HTTPSの導入
出典:オリジナル問題|参考範囲:試験要綱Ver.5.5 / FEシラバスVer.9.2 科目A範囲
正解と解説
正解:プレースホルダ(バインド変数)を使用したSQL文の組立て
正解はウ。SQLインジェクションは、入力値をSQL文の一部として不正に解釈させ、データベースを意図しない形で操作する攻撃である。最も効果的な対策は、プレースホルダやバインド変数を用いて、SQL文の構造と入力データを分離することである。
例えば、利用者名をSQL文字列へ直接連結すると、攻撃者の入力がSQL構文として解釈される危険がある。プリペアドステートメントを使えば、入力値はあくまで値として扱われるため、構文を改変されにくい。
イの入力文字数制限やアのエラー表示制御も補助的対策にはなり得るが、根本対策ではない。エのHTTPSは通信路の暗号化であり、SQLの組立て不備は防げない。
この問題について
IPAが公開するシラバス・試験範囲・公開問題の出題形式を参考にした独自作成問題。公式問題・過去問題の転載ではありません。
公式試験問題、過去問題、公式サンプル問題、市販教材の問題文を転載したものではありません。