ITの基礎知識|ITパスポート・基本情報

基本情報技術者 令和6年公開問題 科目A 問10

2026.06.16

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

  • ア URL を Web ページに出力するときは,”http://” や “https://” で始まる URL だけを許可する。
  • イ 外部からのパラメータで Web サーバ内のファイル名を直接指定しない。
  • ウ スタイルシートを任意の Web サイトから取り込めるようにしない。
  • エ プレースホルダを使って命令文を組み立てる。

Show answer

正解: エ

解説:

SQLインジェクションは,Webアプリケーションの入力欄に SQL文の断片を注入(inject)し,データベースを不正に操作する攻撃です。入力値を文字列連結でそのまま SQL文に埋め込んでいる実装が狙われます。

根本的な対策が プレースホルダ(バインド機構) の利用です。SQL文の構造をあらかじめ確定させておき,入力値は後から「単なる値」としてはめ込むため,入力に SQL の断片が含まれていても命令として解釈されません。

各選択肢を検討します。

  • ア:出力するURLのスキームを http/https に限定するのは,XSS(クロスサイトスクリプティング)対策(javascript: スキーム等の排除)です。
  • イ:外部パラメータでファイル名を直接指定させないのは,ディレクトリトラバーサル対策です。
  • ウ:任意サイトからのスタイルシート取込みを禁止するのは,XSS対策の一種です。
  • エ:プレースホルダの利用。SQLインジェクションの根本的対策です。正解。

「攻撃名と対策の正しいペアを選ぶ」形式は科目Aの定番です。IPA「安全なウェブサイトの作り方」でも,SQLインジェクションの根本的解決策としてプレースホルダが第一に挙げられています。