SkillStack
テクノロジ系10 / 20問

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

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

選択肢を押すと答え合わせができます。

正解と解説を見る

【正解】エ

SQLインジェクションは、利用者が入力した文字列をSQL文へそのまま連結したときに、入力中の記号やSQLの断片が命令として解釈され、不正な検索、更新、削除などを実行される攻撃です。プレースホルダを使ったパラメータ化クエリでは、SQL文の構造を先に確定し、入力値を後からデータとして割り当てます。そのため、入力にSQLの命令が含まれていても命令文の一部として解釈されにくくなり、エが有効です。

アは誤りです。URLのスキームをhttp又はhttpsに制限することは、javascriptスキームなどを悪用したスクリプト実行への対策に関係しますが、データベースへ渡すSQL文の組立ては安全になりません。

イは誤りです。外部入力でサーバ内のファイル名を直接指定させないことは、ディレクトリトラバーサルなどによる意図しないファイルの参照を防ぐ対策です。

ウは誤りです。任意サイトからのスタイルシート読込みを制限することは、外部コンテンツの混入や情報漏えいなどを抑える対策であり、SQLインジェクションへの対策ではありません。

【ポイント】 SQLインジェクション対策の基本は、プレースホルダを用い、値をバインドしてSQL文と入力データを分離することです。 入力値の検証も重要ですが、文字列置換やエスケープだけに依存せず、DBMSのパラメータ化機能を利用しましょう。

出典:令和6年度 基本情報技術者試験 科目A 公開問題 問10
※ 解説は SkillStack 編集部が作成したものです。Web 表示のため、図表の配置や表記を一部改めています。

この回の20問を、アプリで通しで解く

  • 本番と同じ問題数・制限時間で通し演習(模試モード)
  • 間違えた問題は自動で「復習すべき問題」に回る
  • 解説で分からない点はAIに質問できる
SkillStackで無料で始める