問題本文
SQL インジェクション攻撃による被害を防ぐ方法はどれか。
選択肢
- ア.入力された文字が,データベースへの問合せや操作において,特別な意味をもつ文字として解釈されないようにする。
- イ.入力にHTMLタグが含まれていたら,HTMLタグとして解釈されない他の文字列に置き換える。
- ウ.入力に上位ディレクトリを指定する文字列(../)が含まれているときは受け付けない。
- エ.入力の全体の長さが制限を超えているときは受け付けない。
正解
ア. 入力された文字が,データベースへの問合せや操作において,特別な意味をもつ文字として解釈されないようにする。
解説
SQL インジェクション対策の本命は、入力された特殊文字('や;)をリテラルとして扱い、SQL の構文として解釈させない仕組み(プレースホルダ・エスケープ)です。アが正解。
選択肢ごとの解説
- ア.特別な意味を持つ文字として解釈させない、SQL インジェクションの最も有効な対策で正解です。
- イ.HTML タグの置換は XSS(クロスサイトスクリプティング)対策で、SQL インジェクションとは異なります。
- ウ.../ の制限はパストラバーサル攻撃対策で、SQL インジェクションとは別です。
- エ.入力長制限はバッファオーバーフロー対策に近く、SQL 構文の解釈問題は防げません。
基本情報技術者試験 令和4年度 科目A サンプル問題 の過去問一覧へ戻る・問36