2

ユーザー名と他のいくつかの属性を持つユーザーモデルがあるとします。ユーザーは、後でプロフィールを編集するときではなく、歌っているときにのみユーザー名を設定できます。

それでも、:user_name属性は、登録フォームのユーザーモデルのattr_accessibleを介してアクセスできる必要があります。

これにより、悪意のあるユーザーが自分のプロファイルを編集できるフォームを変更し、入力名をuser_nameに変更して、実際に送信時に変更できるかどうか疑問に思います。

私はこれについて正しいですか、つまり、悪意のあるユーザーがそれを行うことができますか、それともRubyはフォームが変更されたことを何らかの形で見つけますか?これがセキュリティの問題である場合、updateメソッドで常にユーザー名をリセットするにはどうすればよいですか?アクセス可能な属性とアクセス可能であるが編集不可能な属性を区別するためのレールの方法はありますか?

4

1 に答える 1

1

いいえ、Rails の CSRF 対策によりできません。このガイドを参照してください。

アプリケーションコントローラーに次の行が必要です。

protect_from_forgery :secret => "123456789012345678901234567890..." 

XSSの詳細については、次の記事も参照してください。この記事では、可能なことと実行する対策について詳しく説明しています。

常にsanitize()入力します。

于 2012-12-04T19:35:33.417 に答える