0

Rails 3.2では、すべての属性が本質的に「ブラックリストに登録」されていることを知っています。これにより、を介して各属性をホワイトリストに登録する必要がありますattr_accessible

ただし、テーブルのすべての列を作成すると、attr_accessible大量割り当て攻撃に対して脆弱になりませんか?

そうでない場合は、なぜですか?

もしそうなら、ホワイトリストに登録することのポイントは何ですか?

これは本当の質問です。私の本番アプリの1つは、Deviseを機能させるためだけに、このようなものを使用する必要があるためです。

attr_accessible :email, :password, :password_confirmation, :remember_me, :name, :confirmed_at, :confirmation_token

考え?

4

2 に答える 2

1

リストされた列は、ユーザーが一括割り当てを介してそれらのレコードを更新できるようにすると、それらの列を更新できるという意味で脆弱です。実行するだけの場合は、フィールドにアクセスできるようにする必要はありませんuser.foo = 'blah'。update_attributesの呼び出し、作成などが関係します。

このデフォルトの変更のポイントは、これを忘れることをほとんど不可能にすることです。属性をホワイトリストに登録する必要があるため、これらのフィールドへのアクセスに問題がないかどうかを検討する必要があります。更新が許可されているレコードのフィールドを変更できる場合、攻撃が何を達成できるかを自問してください。

attr_accessibleモデルは継ぎ目できしむ音を立てています-少し前に、彼らが試みている新しいコントローラーレベルのアプローチについての投稿がRailsブログにありました。

于 2012-06-10T22:00:05.147 に答える
0

あなたの例では、認証プロセスを悪用するために使用できるフィールドは、confirmed_atとconfirmation_tokenの2つだけです。ただし、ユーザーがメールを確認する前に変更することはできないため、デバイスのデフォルトの動作を変更する前に、ここで問題はありません。また、なぜあなたがそれらをアクセス可能にしなければならないのか分かりません。

于 2012-06-10T19:53:15.427 に答える