[v] #003 Strong Parameters

學 Rails 半年了,半年前剛接觸這些主題時,只能透過 google 到的生冷名詞解釋來理解;半年後,許多踩雷的痛轉換成一點點經驗值,而能夠在每篇的最後寫上個人小小的心得,做為學習成果的驗收。

這是第 003 篇

strong parameters 是什麼?

Rails內建的一個安全機制,限制 parameters 參數寫入 database 中。

為什麼我們要用 strong parameters?

由於 Rails 中 model 的欄位直接對應 database 中 form 的欄位,因此容易被猜到關鍵欄位的命名方式而被駭,透過strong parameters 設定白名單,白名單內的欄位才能被寫入值,就能避免被暴力猜出命名方式後被寫參數進 database, 進而避免被駭。

如何使用 strong parameters?

class Admin::ProductsController < ApplicationController

  def create
    @product = Product.new(product_params)
  end
  
  def update
    @product = Product.find(params[:id])
    
    if @product.update(product_params)
      redirect_to admin_products_path
    else
      render :edit
    end  
  end
  
  private
  
  def product_params
    params.require(:product).permit(:title, :description)
  end
  
end