Strong Parameterでセキュリティを担保する

※本サイトで紹介している商品・サービス等の外部リンクには、アフィリエイト広告が含まれる場合があります。

【大事】Strong Parameterについて

安全なアプリケーションを作るためのセキュリティに関係する概念

  • 権限を操作して、ユーザーの情報を抜き出す・流出させる
  • アプリケーションに保存されたデータが消えてしまう

アプリを作るうえで、セキュリティを担保しないといけない


params.require(:◯◯).permit(:△△, :□□)

  1. フォームからサーバーにデータ(parameter)を送る(params)
  2. フォームのhtmlは、ユーザーが自由に変更できてしまう
    例)「content」じゃなくて「body」にしてparamsを改変する 等
  3. サーバーがなんでも保存してしまうのは危険
  4. データを変更されても保存しないようにしておく
    例)「title」と「content」しか保存しないよ!

paramsの構造

paramsの状態
  {
    article: {
        title: "",
        content: ""
        }
    }
strong parameter
    params
    .require(:article)
    .permit(:title, :content)
  • 「article」キーが必要(requireは「求める」の意味)
  • 「title」と「content」のみ保存する(permitは「許可」の意味)

キーを指定し、保存する項目を限定することで安全性を高める


privateの中に書く

Strong Parameterはprivateの中に書くこと

↓ app/controllers/articles_controller.rbに追加する

  private

  def article_params
    params.require(:article).permit(:title, :content, :eyecatch)
  end
  • articleを更新するから、「article_params」と書く
  • (更新の対象)_params」と名前をつけるのがルール

#DAY12