💪
【Rails】🔰 Strong Parameters って何のため?と聞かれて10秒で回答する方法
はじめに
こんにちは、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でのセキュリティの基本的な防御策の一つ。
参考
Discussion