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

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

問題本文

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

選択肢

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

正解

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

解説

SQLインジェクションの根本対策はプレースホルダ(プリペアドステートメント)で値とSQL構文を分離することで、これがアプリ実装側の正解。実装以外では、万一侵入されても被害を限定するため、DBアカウントの権限を必要最小限に絞るのが有効。両方を満たすエが正しい。他の選択肢はXSSやコマンドインジェクション等、別の脆弱性向けの対策が混在している。

選択肢ごとの解説

  • .シェル不起動とchrootはOSコマンドインジェクション向けの対策で、SQLインジェクション対策ではない。
  • .セッションID乱数化とTLS秘匿はセッション・盗聴対策で、SQLインジェクションの直接対策ではない。
  • .パス名を受け取らない等はディレクトリトラバーサル対策で、SQLインジェクションの対策に当たらない。
  • .プレースホルダ利用とDB権限の最小化は、実装と実装以外の双方で有効なSQLインジェクション対策で正解。

情報処理安全確保支援士試験 平成30年度春期 午前Ⅱ過去問一覧へ戻る・問17