情報処理安全確保支援士試験 情報セキュリティスペシャリスト試験 平成27年度春期 午前Ⅱ17: SQLインジェクション対策について,Webアプリケーションの実装における対策とWebアプリケーションの実装以外の対策として,ともに適切なものはどれか。

情報セキュリティスペシャリスト試験 平成27年度春期 午前Ⅱ
Q 1717 / 25
対策について,Webアプリケーションの実装における対策とWebアプリケーションの実装以外の対策として,ともに適切なものはどれか。
Webアプリケーションの実装における対策Webアプリケーションの実装以外の対策
Webアプリケーション中でシェルを起動しない。chroot環境でWebサーバを稼働させる。
セッションIDを乱数で生成する。TLSによって通信内容を秘匿する。
パス名やファイル名をパラメタとして受け取らないようにする。重要なファイルを公開領域に置かない。
プレースホルダを利用する。データベースのアカウントがもつデータベースアクセス権限を必要最小限にする。

問題本文

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

選択肢

  • .Webアプリケーション中でシェルを起動しない。/chroot環境でWebサーバを稼働させる。
  • .セッションIDを乱数で生成する。/TLSによって通信内容を秘匿する。
  • .パス名やファイル名をパラメタとして受け取らないようにする。/重要なファイルを公開領域に置かない。
  • .プレースホルダを利用する。/データベースのアカウントがもつデータベースアクセス権限を必要最小限にする。

正解

. プレースホルダを利用する。/データベースのアカウントがもつデータベースアクセス権限を必要最小限にする。

解説

SQLインジェクション対策の本命は、アプリ実装ではプレースホルダ(バインド機構)を使い、入力値をSQL構文ではなくデータとして扱うこと。実装以外では、万一突破された場合の被害を抑えるため、DBアカウントの権限を必要最小限にする多層防御が有効。実務ではこの両輪で、注入の防止と侵害時の被害局限を同時に確保する。

選択肢ごとの解説

  • .シェル起動回避やchrootはOSコマンドインジェクション側の対策であり、SQLインジェクションの対策ではないため誤り。
  • .乱数セッションIDやTLSはセッション保護・盗聴対策であり、SQLインジェクション対策ではないため誤り。
  • .パス名を受け取らない等はディレクトリトラバーサル対策であり、SQLインジェクションの対策ではないため誤り。
  • .プレースホルダ利用とDB権限の最小化はSQLインジェクションの実装内・実装外対策として正しい。

情報セキュリティスペシャリスト試験 平成27年度春期 午前Ⅱ過去問一覧へ戻る・問17