2016-08-01 3 views
0

質量割り当ては、アプリケーションがハッシュの値からレコードを作成できるようにするRailsの機能です。発生する可能性のある2つの異なる質量割り当て警告があります。最初は、質量割り当てが実際に行われるときです。例: -False質量の割り当てに関する警告は、Brakeman Gemによってmodel.newおよびmodel.update_attibutesおよびmodel.createでスローされます。

User.new(params[:user]) 

私は、テーブルで利用可能なフィールドを使用して直接マッピングするためにハッシュを使用していませんが、

User.new(:first_name => params[:first_name], :last_name => params[:last_name ], :address => params[:address]) 

または

user.update_attributes(:first_name => params[:first_name], :last_name => params[:last_name ], :address => params[:address]) 

はなぜ、これが大量の割り当ての脆弱性につながっている:代わりに私のような何かをやっていますか?私が盲目的にハッシュを割り当てているわけではないので、私はテーブルの属性のほんの僅かしか更新しません。

user = User.new 
user.first_name = params[:first_name] 
user.last_name = params[:last_name ], 
user.address = params[:address] 
user.save 

しかし、これは制動手が問題としてこれを警告されないように、不要なコードを書くようなものです。このため

一つの修正は、次の操作を行っています。これは実際には1行ではなく4行で同じことをしています。

ここで実際の問題が何かを理解してもらうか、これが誤ったアラートであることを確認してください。また、この誤ったアラートが表示されないようにする方法もありますか?

私は制動手3.0.5、ルビー1.8.7、Railsの2.3.2を使用しています

答えて

0

accepts_nested_attributes_forによる値の質量割り当ての問題があることが可能です。しかし、を使用していない場合、これはおそらく偽陽性です。

Notice Brakemanは、このコードに対して「弱い」信頼の警告を返します。 Brakemanの「弱い」信頼性警告の大部分と同様、コードを見てみるべきですが、おそらく問題ではありません。

Brakeman's ignore configurationを使用すると、偽陽性を無視できます。 Brakemanを-w 2で実行することで、弱い信頼の警告を無視することもできます。 -x MassAssignmentで大量割り当て警告を無効にすることも可能ですが、古くから(おそらく非常に脆弱な)バージョンのRailsを実行しているので、これをお勧めしません。

+0

ありがとうございます@ジャスティン。 –

関連する問題