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

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

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

問題

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

選択肢

  1. ア
    WebアプリケーションプログラムのWebアプリケーションプログラムの
  2. イ
    実装における対策実装以外の対策志Webアプリケーションプログラム中で | chroot環境でWebサーバを稼働させ7 | シェルを起動しない。 る。
  3. ウ
    | セッションIDを乱数で生成する。 TLSによって通信内容を秘匿する。
  4. エ
    パス名やファイル名をパラメータとし| 重要なファイルを公開領域に置かな
解き方のヒントを見る

SQLインジェクション対策は、SQLに余計な命令を混ぜさせないことが大事だよ

SQLインジェクション対策では、まずプレースホルダを使って、利用者の入力をSQL文そのものに混ぜ込まないようにしよう。たとえるなら、注文メモに書かれた文字を店員さんの業務命令として読まないように分けて扱う感じだよ。さらに、万が一に備えて、アプリが使うDBアカウントの権限は必要最小限にしておくことも大切だよ。

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

この問題では、入力チェックだけに頼らず、プレースホルダによる実装上の対策と、DB権限を絞る運用上の対策を組み合わせて、SQLインジェクションを防ぐ考え方を整理できるかが問われているよ。

SQL インジェクション対策

コード側で SQL を固定化し、DB 側では被害範囲を最小化する。

実装: プレースホルダ\n運用: DB権限最小化

確認ポイント

  • セッション ID 乱数化は SQL インジェクション対策ではありません。
  • TLS や chroot は別の防御策であり論点がずれる。
  • プレースホルダと DB 権限最小化の組を選ぶ。
正解と解説を見る

正解

エ

出典

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

選択肢ア

これは不正解だよ。パス名やファイル名を外から受け取らない、重要ファイルを公開領域に置かない、というのは「客に倉庫の棚番号を自由に指定させない」ような対策だよ。これは主にディレクトリトラバーサルなどファイルを勝手に読まれる攻撃への対策で、SQLインジェクションの中心対策ではないよ。

選択肢イ

これは不正解だよ。シェルを起動しない、chrootでWebサーバを閉じ込める、というのは「泥棒が入っても家の奥まで行けないようにする」対策に近いんだ。でもSQLインジェクションは、受付窓口でSQLという注文票を書き換えられる問題だから、直接の対策としてはズレているよ。

選択肢ウ

これは不正解だよ。セッションIDを乱数にする、TLSで通信を暗号化するのは、合鍵を推測されにくくしたり、手紙を封筒に入れて運ぶような対策だよ。ログイン状態や通信の盗み見には効くけど、SQL文に悪い入力を混ぜられるSQLインジェクション対策そのものではないんだ。

選択肢エ(正解)

これが正解だよ。プレースホルダを使うと、利用者の入力をSQLの命令として混ぜずに、ただの値として扱えるんだ。たとえるなら、注文票の自由記入欄に店員への命令を書かれても、ちゃんと『商品名』としてだけ受け取る仕組みだよ。さらにDB権限を必要最小限にしておけば、万一突破されても被害を小さくできるから、実装面と運用面のSQLインジェクション対策として適切だよ。

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

関連する過去問一覧

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