SkillStack
テクノロジ系17 / 25問

情報処理安全確保支援士試験 令和5年度 春期 午前II 問17

SQLインジェクション対策について、Webアプリケーションプログラムの実装における対策と、Webアプリケーションプログラムの実装以外の対策の組みとして、適切なものはどれか。

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

正解と解説を見る

【正解】エ

SQLインジェクションは、利用者の入力をSQL文の一部として文字列連結したときに、入力中の記号や命令がSQLの構文として解釈される脆弱性です。プレースホルダを使うと、SQL文の構造を先に確定し、入力値を後からデータとして割り当てられます。そのため、入力にSQLの断片が含まれていても命令として実行されません。また、アプリケーションが使うデータベースアカウントの権限を参照や更新などの必要最小限にすれば、攻撃を受けた場合でも、表の削除や管理情報の変更といった被害を抑えられます。したがって、実装上の予防策と実装以外の被害軽減策を正しく組み合わせたエが適切です。

アの、シェルを起動しない対策は誤りです。これはOSコマンドインジェクションの対策です。chrootはプロセスから見えるファイルシステムの範囲を制限する仕組みであり、SQL文の不正な実行を直接防ぐものではありません。

イの、推測困難なセッションIDはセッションハイジャックへの対策です。TLSによる秘匿は盗聴や改ざんへの対策であり、不正なSQLがサーバで実行されることは防げません。

ウの、パス名などを受け取らない対策と重要ファイルを公開領域に置かない対策は、ディレクトリトラバーサルや意図しないファイル公開への対策です。

【ポイント】 SQLインジェクション対策の基本は、バインド機構を備えたプレースホルダの利用です。 入力値のエスケープだけに依存せず、SQLの構造とデータを分離します。 最小権限は侵入そのものの防止ではなく、侵入後の被害範囲を狭める多層防御です。

出典:令和5年度 春期 情報処理安全確保支援士試験 午前II 問17
※ 解説は SkillStack 編集部が作成したものです。Web 表示のため、図表の配置や表記を一部改めています。

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

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