SC Workbook
科目 A-2 · セキュリティ

マスアサインメント対策

あるフレームワークは,HTTP 要求のパラメータを名前が一致するオブジェクトの属性に自動的に割り当てる。利用者オブジェクトには name,email のほかに権限を表す role 属性がある。プロフィール編集画面は name と email だけを送信するが,攻撃者が要求に role=admin を追加したところ,自分の権限が昇格した。対策として,最も適切なものはどれか。

  1. ア送信された全パラメータをサーバ側で HTML エスケープしてから属性に割り当てる。
  2. イ自動割当ての対象を,その画面が更新してよい項目(name,email)だけに限定する専用の入力オブジェクトを用い,role などを対象から除外する。
  3. ウ編集フォームから role の hidden フィールドを取り除き,画面から role が送られないようにする。
  4. エrole 属性を更新する要求に対してだけ CSRF トークンの検証を追加する。
正解と解説を見る

正解 イ

この問題の基礎知識

  • マスアサインメントは,要求のパラメータを名前が一致するオブジェクトの属性に自動的に割り当てるフレームワークの機能を悪用し,更新を想定していない属性を書き換える攻撃である。
  • 画面の入力項目や hidden フィールドによる制限は,攻撃者が要求を直接組み立てれば回避できる。セキュリティ上の制御は必ずサーバ側で行う。
  • 更新してよい属性を明示する許可リスト方式や,編集してよい項目だけをもつ専用の入力オブジェクトを使う方式が基本の対策であり,許可リストは拒否リストより漏れが生じにくい。
  • HTML エスケープは XSS 対策,CSRF トークンは第三者のサイトを起点とする要求への対策であり,利用者本人が要求に項目を追加する攻撃には効果がない。
ア送信された全パラメータをサーバ側で HTML エスケープしてから属性に割り当てる。

エスケープは XSS 対策であり,role という項目が割り当てられること自体は止められない。問題は値の文字ではなく割当て対象の範囲なので効果がない。

イ自動割当ての対象を,その画面が更新してよい項目(name,email)だけに限定する専用の入力オブジェクトを用い,role などを対象から除外する。正解

更新を許す属性をホワイトリストで明示し,権限などの項目を自動バインドから外すのがマスアサインメントの基本対策である。要求に余計な項目があっても割り当てられない。

ウ編集フォームから role の hidden フィールドを取り除き,画面から role が送られないようにする。

攻撃者は画面を介さず要求を直接組み立てて role を付加できる。クライアント側のフォームを変えてもサーバ側の自動割当ては防げない。

エrole 属性を更新する要求に対してだけ CSRF トークンの検証を追加する。

CSRF トークンは第三者サイト起点の要求を防ぐもので,利用者本人が項目を追加する本事例は防げない。対象とする脅威が異なる。

検証用の出典出典照合済み
OWASP Mass Assignment Cheat Sheet / CWE-915 Improperly Controlled Modification of Dynamically-Determined Object Attributes
照合の根拠(5 件)
問題 ID A2-SEC-0601 · AI 作成のオリジナル問題 · 正解と各選択肢の根拠を出典の原文で確認しています。 照合日 2026-11-08

非公式の学習用アプリです(IPA とは関係ありません)。問題はすべて AI が作成したオリジナルで、誤りを含む場合があります。