1

attr_accessible のセキュリティ上の脅威については非常に多くのことが書かれているため、属性を含める必要があるかどうかさえ疑問に思い始めています。これが問題です。私はMessage次のようなモデルを持っています:

attr_accessible :body,:sender_id,:recipient_id

updateにoreditアクションがありませんmessages_controllernewandアクションを使用createして、新しいメッセージを作成し、受信者に送信できます。ログインして一定の条件を満たしたユーザーのみがメッセージをやり取りできます。私は a の助けを借りてそれを行いbefore_filter、条件は正常に機能します。senderメッセージは保存され、およびで表示できますrecipient。完全!

私が持っている質問は、:body,:sender_id,:recipient_idが含まれているためattr_accessible、悪意のあるユーザーがどうにか:body,:sender_id,:recipient_idして元のメッセージの を変更できるかということです。これらの属性も追加してattr_readonly、保存後に変更できないようにする必要がありますか?

この質問は、ほとんどすべてのモデルで私を悩ませてきました。

4

2 に答える 2

1

モデルのインスタンスをどのように作成しているかによって異なります。使用する場合:

FooModel.create(params[:foo])

はい、ログインしたユーザーは、それらの属性のフォームフィールドを明示的に提供しなくても、追加のパラメーターをリクエストに渡す可能性があるため、安全ではありません。

したがって、あなたの場合、sender_id、recipient_id (リクエストの値) を使用して「作成」アクションに投稿した人は、アクションでこの割り当てに注意しない限り、それらを変更できます。

于 2013-05-13T13:56:30.317 に答える