SC情報処理安全確保支援士試験 午前Ⅱ

平成21年度秋期 情報処理安全確保支援士 午前Ⅱ 問14

問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。

問題

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

選択肢

  1. ア
    Webアプリケーションの実装における | アプリケーションの実装以外の対策
  2. イ
    対策ア | Webアプリケーション中でシェルを起 | chroot環境でWebサーバを実行する。 動しない。 イ | セッションIDを複雑なものにする。 SSLによって通信内容を秘匿する。 ウ | パインド機構を利用する。 データベースのアカウントのもつデータベ
  3. ウ
    ースアクセス権限を必要最小限にする。
  4. エ
    | パス名やファイル名をパラメタとして | 重要なファイルを公開領域に置かない。 受け取らないようにする。
解き方のヒントを見る

SQLの命令文に「虫食いの穴(プレースホルダ)」を作り、入力データと命令をごちゃ混ぜにしない

Webセキュリティの王道「SQLインジェクション対策」の組み合わせ問題だよ。システム開発時の対策(実装)としては、SQLの命令文の中に「プレースホルダ(虫食い穴)」を作っておき、ユーザーの入力データを後からただの値として流し込む(バインドする)ことで命令を混入させないのが基本。また、万が一ハッキングされた場合(運用)を考えて、DB接続用アカウントの権限を「必要最低限(読み書きだけ等)」にして被害を小さくするよ。

この問題で問われていること

プログラム作成時の根本対策(「プレースホルダ」でのSQL文の固定)と、運用面での被害最小化対策(「DBアカウントの権限を必要最小限にする」)の適切なペアを選び出そう。

SQL インジェクション対策の二本柱

入力値を文字列連結で SQL に埋め込むと攻撃文が混入します。バインドで構文を分離し、さらに DB 権限を絞れば不正操作の範囲も限定できます。

実装: バインド機構\n運用: DB 権限を最小化\n-> 攻撃成立と被害を抑える

確認ポイント

  • chroot や SSL は一般対策で、SQL インジェクションの本筋ではありません。
  • ファイル名を受け取らない対策は別の脅威向けです。
  • バインド機構 + 権限最小化の組合せを選びます。
正解と解説を見る

正解

ウ

出典

問題文と解答は IPA 公開の過去問題冊子・解答例を基にしています。

選択肢ア

これは不正解だよ。シェルを起動しない、chroot環境でWebサーバを動かす、という話は、主にOSコマンドインジェクション対策なんだ。たとえるなら、店員に勝手に倉庫の機械を操作させない対策であって、データベースへの注文票に悪い命令を書き込まれるSQLインジェクションの直接対策ではないよ。

選択肢イ

これは不正解だよ。セッションIDを複雑にしたり、SSL/TLSで通信を暗号化したりするのは、なりすましや盗み見への対策なんだ。合鍵を作られにくくしたり、会話を外から聞かれにくくしたりするイメージだよ。でもSQLインジェクションは、入力欄からデータベースに悪い命令を混ぜる攻撃なので、対策の方向が違うよ。

選択肢ウ(正解)

これは正解だよ。SQLインジェクションは、入力欄に“命令文っぽい文字”を混ぜて、データベースに余計なことをさせる攻撃なんだ。バインド機構は、注文票の「品名欄」に勝手に店員への命令を書かれても、ただの品名として扱う仕組みみたいなものだよ。さらにDB権限を必要最小限にしておけば、万一入り込まれても開けられる部屋を減らせるので、SQLインジェクション対策として適切だよ。

選択肢エ

これは不正解だよ。パス名やファイル名を受け取らない、重要ファイルを公開領域に置かない、というのはディレクトリトラバーサル対策だよ。たとえるなら、お客さんに『店の裏口の棚番号』を指定させない対策なんだ。SQL文を悪用してデータベースを操作される問題とは狙っている場所が違うよ。

出典:独立行政法人 情報処理推進機構(IPA)平成21年度秋期 情報処理安全確保支援士試験 午前Ⅱ 問14(公式資料:問題冊子(PDF) / 解答例)

関連する過去問一覧

IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針