2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

brakemanのMassAssignmentでエラー(rails)

Last updated at Posted at 2021-03-30

#課題
指定した箇所について、brakemanのMassAssignmentチェックをスキップしたい。

#詳細
brakemanのログを見ると、以下のようにWarningが出ている。

== Warnings ==

Confidence: Medium
Category: Mass Assignment
Check: PermitAttributes
Message: Potentially dangerous key allowed for mass assignment
Code: params.require(:user).permit(:role)
File: app/controllers/users_controller.rb
Line: 14

どうやら、以下のソースコードの「role」という単語に反応しているようだ。

users_controller.rb
  private

  def user_params
    params.require(:user).permit(:role)
  end

brakemanのソースコードを覗いてみると、
https://github.com/presidentbeef/brakeman/blob/aef6253a8b7bcb97116f2af1ed2a561a6ae35bd5/lib/brakeman/checks/check_permit_attributes.rb

roleがSUSPIOUS_KEYSとして登録されていた。
admin、account_idやroleなどのカラム名をpermitするのは危険だと定義しているらしい。

lib/brakeman/checks/check_permit_attributes.rb
require 'brakeman/checks/base_check'

class Brakeman::CheckPermitAttributes < Brakeman::BaseCheck
  Brakeman::Checks.add self

  @description = "Warn on potentially dangerous attributes allowed via permit"

  SUSPICIOUS_KEYS = {
    admin: :high,
    account_id: :high,
    role: :medium,
    banned: :medium,
  }

私としてはroleをpermitしたいので、このwarningチェックをスキップさせたい。

解決策

config/brakeman.ignore にスキップさせたい項目を定義できるようだ。
このファイルは以下のコマンドでスキップさせたい項目も定義しながら、作成できる。

bundle exec brakeman -I 

以上で解決した。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?