選択肢
- ア.入力中の文字がデータベースへの問合せや操作において,特別な意味をもつ文字として解釈されないようにする。
- イ.入力にHTMLタグが含まれていたら,HTMLタグとして解釈されない他の文字列に置き換える。
- ウ.入力に,上位ディレクトリを指定する文字列(../)を含むときは受け付けない。
- エ.入力の全体の長さが制限を超えているときは受け付けない。
正解
ア. 入力中の文字がデータベースへの問合せや操作において,特別な意味をもつ文字として解釈されないようにする。
解説
SQLインジェクションは入力された文字列に含まれる引用符などのSQL特殊文字をそのままSQL文に連結することで攻撃が成立します。対策は特殊文字をエスケープしたり、プレースホルダ(プリペアドステートメント)を使って、入力をSQL文の構文要素として解釈させないことです。よってアが正解です。
選択肢ごとの解説
- ア.入力に含まれるSQL特殊文字を構文として解釈させない対策はSQLインジェクションの根本対策であり正解です。
- イ.HTMLタグのエスケープはクロスサイトスクリプティング(XSS)対策で、SQLインジェクションとは別の攻撃に対する対策です。
- ウ.「../」の混入を弾くのはディレクトリトラバーサル(パストラバーサル)対策で、SQLインジェクションとは別です。
- エ.入力長制限はバッファオーバーフローやサービス拒否対策には有効ですが、SQLインジェクションの根本対策ではありません。
基本情報技術者試験 平成25年度 春期 午前 の過去問一覧へ戻る・問40