💪

【Rails】🔰 Strong Parameters って何のため?と聞かれて10秒で回答する方法

2024/10/15に公開

はじめに

こんにちは、Takeです。都内の自社開発企業でエンジニアとして働いています。

結論

結論としては、

Strong Parametersとは、不正なデータがサーバーに送信されることを防ぐための仕組みです。

具体的には

ユーザー名を送信するフォームでは、基本的には「ユーザー名」だけが送られるはずです。

しかし、悪意のある第三者が開発者の意図しないデータ(例えば管理者権限や他のデータ)を追加して送る可能性があります。これが許されると、データベースの中身を不正に変更される危険性が出てきます。

例えば、フォームやAPIリクエストなどで、以下のようなデータが送信されるケースを想定します。

{
  "user": {
    "name": "悪意のあるユーザー",
    "admin": true
  }
}

もし、この「admin」というフィールドが存在していて、それを保存できてしまったら、攻撃者が勝手に「管理者権限」を持つようになってしまいます。これを防ぐのがStrong Parametersの役割です。

Strong Parametersの具体的な動作

Strong Parametersを使うと、サーバーに送られたデータのうち、許可したものだけを保存できるようにします

例えば、ユーザー名だけを保存したい場合は次のように書きます。

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

ここで permit(:name) を使って、「name」というフィールドだけを許可しています。

これにより、送信されたデータに「admin」や他のフィールドが含まれていても、Railsはそれらを無視して「name」だけを保存します。

まとめ

  • Strong Parametersは、サーバーに送られたデータの中で、許可したものだけを受け入れる仕組み。
  • 悪意のある攻撃者が意図しないデータ(例: 管理者権限)を送ってくることを防ぐ。
  • Railsでのセキュリティの基本的な防御策の一つ。

参考

https://railsguides.jp/action_controller_overview.html#strong-parameters

Discussion