テクノロジ系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に質問できる