令和6年度 科目A 問10
セキュリティ
SQLインジェクションの対策
SQL インジェクションの対策として,有効なものはどれか。
- アURL を Web ページに出力するときは,“http://”や“https://”で始まる URL だけを許可する。
- イ外部からのパラメータで Web サーバ内のファイル名を直接指定しない。
- ウスタイルシートを任意の Web サイトから取り込めるようにしない。
- エプレースホルダを使って命令文を組み立てる。
答えと解説を見る
✓ これが正解エプレースホルダを使って命令文を組み立てる。
解説
命令文の形を先に決めるプレースホルダが有効な対策です。
SQL インジェクションは、入力値に SQL 文の一部を紛れ込ませ、組み立てられる命令文の意味を書き換えてしまう攻撃です。プレースホルダを使う方法では、命令文の形を先に決めておき、入力値はあとから値としてだけ当てはめます。入力値が SQL の構文として解釈されないので、命令文の意味を変えられることを防げます。残りの三つは、URL の出力、ファイル名の指定、スタイルシートの取込みに関する対策で、どれも別の攻撃に向けたものです。対策が守っているのがデータベースへの命令文かどうか、で見分けます。
ほかの選択肢はなぜ違うのか
- アURL を Web ページに出力するとき…:Web ページに出力する URL を http:// や https:// で始まるものに限るのは、スクリプトを動かす URL を埋め込まれることへの備えで、クロスサイトスクリプティング対策の一つです。データベースへの命令文は守れません。
- イ外部からのパラメータで Web サーバ内…:外部から渡された値でサーバ内のファイル名を直接指定しないのは、上位のディレクトリをたどって本来見せないファイルを読まれる、ディレクトリトラバーサルへの対策です。SQL 文の組立てとは関係しません。
- ウスタイルシートを任意の Web サイトか…:スタイルシートを任意のサイトから取り込めないようにするのは、外部のスタイルシートを通じて不正な処理を仕込まれることへの備えで、クロスサイトスクリプティング対策として挙げられるものです。SQL 文の改変は防げません。
この問題の用語
- プレースホルダ問合せ文の値の部分を、あとから当てはめる形にしておく書き方です。値を文と分けて渡すので、文の使い回しや不正な文の混入防止に役立ちます。
- クロスサイトスクリプティング出力処理の不備を突き、利用者のブラウザで攻撃者のスクリプトを動かす攻撃です。防ぐには、出力する文字を無害な形に置き換えます。
- ディレクトリトラバーサルパス名を使ってファイルを指定し、見せる気のないファイルを読む攻撃です。命令文を送り込んで実行させるSQLインジェクションとは別です。
- URLインターネット上の場所を表す住所の文字列です。指したページがサーバに無いときは、404という番号のエラーが返ります。
出典:令和6年度 基本情報技術者試験 科目A 問10
同じ用語が出る問題
- 令和5年度 科目B 問6:なりすましに関する問題(URL)
- 令和元年度 秋期 午前 問41(クロスサイトスクリプティング)
- 令和元年度 秋期 午前 問39:バックドアに該当するもの(URL)
- 平成29年度 春期 午前 問37:ディレクトリトラバーサルの問題(ディレクトリトラバーサル)
- 平成26年度 秋期 午前 問44:ディレクトリトラバーサルの問題(ディレクトリトラバーサル)
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)