permitのレールのドキュメントには、「大量更新に許可する属性を制限するのに便利です」と記載されていますRails - 質量割り当て外のparams.permit()のユーティリティ?
他にユーティリティはありますか?セキュリティを教えてください。
permitのレールのドキュメントには、「大量更新に許可する属性を制限するのに便利です」と記載されていますRails - 質量割り当て外のparams.permit()のユーティリティ?
他にユーティリティはありますか?セキュリティを教えてください。
セキュリティ上の理由から、.permit
の全体のポイント。 Rails 3.0では、Railsはパラメータの一括割り当てに関してホワイトリストアプローチを使用しています。これは基本的にはすべてのパラメータがデフォルトで許可されておらず、どのパラメータを一括割り当てできるかを手動で許可する必要があるということです。
これは、ハッカーが特定のパラメータを使用できないようにします。つまり、管理者が存在し、ブール値を受け入れるかどうかを確認するadminパラメータがある場合、ハッカーはadmin = trueというパラメータを書き込むだけです。特定のコンポーネントを作成、更新、削除するアプリの能力に潜在的にアクセスすることができます。
これを防ぐための鍵は、強力なパラメータを使用して、一括割り当てするパラメータのみを許可することです。そうすることで、ハッカーが使用したくないパラメータにアクセスできるようにする潜在的な落とし穴を避けることができます。 .require
と組み合わせて.permit
でこれを行います。
しかし、どのように役立ちますか? adminパラメータを使用していない場合は、とにかくデータベースにどのように入りますか? –
強力なパラメータは、あなたがadminパラメータのようなものを使用しているという仮説的な状況を防ぐことです。強力なパラメータは、必ずしも100%のケースで使用する必要はありませんが、Railsでは、ハッカーが操作できるパラメータを持っている場合に備えて、デフォルトで使用することをお勧めします。 SQLインジェクション、クロスサイトスクリプティングなど、ハッキングされる可能性のある他の多くの方法がありますが、 '.permit'などの強力なパラメータを使用すると、パラメータの使用を操作することでハッキングされることがありません。 – the12