LoginSignup
9
10

More than 3 years have passed since last update.

【今更聞けない】Strong Parameters とは

Last updated at Posted at 2019-05-05

概要

railsを勉強してると出てくる[Strong Parameters]強いパラメータ?
「コントローラーの下の方に書いて置けばいいんでしょ」位の知識しかなかったので、
今回改めて、必要性について調べてみました。

Strong Parametersとは

マスアサイメント脆弱性を回避するためにrails4以降に提供されるようになった機能

使い方

マスアサイメントとはRailsにもともと備え付けられている機能で、
1つのモデルに対するフィールドのまとめ設定の事を言います。
例えばrails3以前はStrong Parametersは無く下記のような記述が可能でした。

@book = Book.new(params[:book])

@book = Book.find(params[:id])
@book.update_attributes(params[:book])

しかしこのような[new/update_attributes]のようなマスアサインメント系のメゾットでは
無条件に全てのフィールドを上書きしてしまう為、
悪意のあるユーザが自身に管理者権限を付与するなどシステムを自由に操作できてしまう危険性があったのです。

そこで提供されたのでがStrong Parametersです。
フィールド値の一括設定に先立ってあらかじめ設定可能な値を明示的に宣言しておくことで
脆弱性を回避できます。

def new
  @book = Book.new(book_params)
end

private

def book_params
  params.require(:book).permit(:title, :price, :publish)
end

参考

9
10
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
9
10