質問: Rails等のWebアプリでCSRFとMass Assignmentの両方に対策する必要があるのでしょうか。 CSRF対策さえできてれば、正当なFormからのデータ送信=Mass Assignment対策不要と考えました。Strong Parametersで全データを無分別にpermitした場合(もちろんCSRF対策は行う)、どんな問題が生じますか。
回答: CSRF攻撃は悪意を持った人物がわなを仕掛け、そのわなを踏んだ正規ユーザーに普通のリクエストを送らせるというものです。例えば「リンクを踏むだけで特定の文言がツイートされてしまう」といったものです。ですから、正しいページ遷移かどうかを検証します。 一方 Mass Assignment は、ユーザーから送信された値をデータベース等に保存するという処理において、求めていないデータが送られてきても一緒に保存してしまうという問題です。本来ユーザーには書き換えさせない列まで書き換えられてしまいます。 ではページ遷移が正しければ、Mass Assignment が行われる可能性はないと言えますか?関係ないですよね。正当なFormを開いて、ブラウザの開発者ツールでinputを追加して、送信ボタンを押すだけで Mass Assignment を利用した攻撃は成立します。