#概要
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