はじめに
あるシステムの開発中にBrakemanで「Specify exact keys allowed for mass assignment instead of using permit! which allows any keys」という警告が表示され詰まった時のお話です。
問題
Brakemanで警告が表示されたコードは下記です。
params.permit![:hoges].to_h
原因を調査したところ、permit!メソッドを使用するとすべてのキーが許可されてしまうことや後から追加したキーも許可されてしまうため、Brakemanは警告を表示してそうでした。
解決策
permit!メソッドではなくpermitメソッドで許可するキーを指定するように変更しました。
下記は変更後のコードです。
params[:hoges].permit(key).to_h
おわりに
permit!メソッドはセキュリティリスクを高めるため、可能な限りpermitメソッドを使用した方がよさそうです。誤り等ありましたらご指摘いただけると助かります!
参考