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

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

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

問題

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

選択肢

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

SQLインジェクション対策は、SQL文と入力値を混ぜないことが大事だよ

SQLインジェクション対策では、ユーザの入力をそのままSQL文にくっつけないことが重要だよ。たとえば、料理のレシピ本文と後から入れる具材を分けておくイメージで、プレースホルダを使うとSQL文とパラメータをきちんと分離できるんだ。さらに、DBに接続するアカウントの権限は必要最小限にしておこう。もし攻撃されても、できる操作を少なくして被害を広げにくくできるよ。

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

この問題では、SQLインジェクション対策を、通信の暗号化やchroot、ファイル公開の制御とごちゃ混ぜにしないことがポイントだよ。見るべきところは、SQLの組み立て方と、DBアカウントの権限を絞っているかどうかなんだ。

SQL インジェクション対策

入力値を SQL 文へ直接連結しないことが一次対策で、万一侵入されても DB 権限を絞って被害を抑える。

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

確認ポイント

  • TLS は通信保護であり SQL 文構築の対策ではありません。
  • chroot や公開領域制御は別系統の対策です。
  • プレースホルダ + DB 権限制限の組合せを選ぶ。
正解と解説を見る

正解

エ

出典

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

選択肢ア

これは不正解だよ。シェルを起動しないことやchrootでWebサーバを閉じ込めることは、泥棒が家の中で自由に動き回れないようにする対策みたいなもの。でもSQLインジェクションは、受付窓口で変な命令を書いた紙を渡してデータベースをだます攻撃なので、対策の的が少し違うんだ。

選択肢イ

これは不正解だよ。パス名やファイル名を受け取らない、重要ファイルを公開場所に置かない、というのは倉庫の場所を勝手に指定されないようにする対策だよ。これは主にディレクトリトラバーサルなどへの対策で、データベースへの命令を悪用するSQLインジェクション対策としてはずれているんだ。

選択肢ウ

これは不正解だよ。セッションIDを乱数にするのは、合鍵番号を推測されにくくする対策、TLSは手紙を封筒に入れて盗み見されにくくする対策だよ。どちらも大事だけど、SQL文に悪い命令を混ぜられるSQLインジェクションを直接防ぐ対策ではないんだ。

選択肢エ(正解)

これは正解だよ。プレースホルダは、注文票の『ここに名前を書く欄』をあらかじめ決めておき、入力された文字を命令ではなくただの値として扱う仕組みなんだ。さらにDBアカウントの権限を必要最小限にしておけば、万一すり抜けられても、店員用の鍵しか持たせないように被害を小さくできるよ。

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

関連する過去問一覧

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