Rails and sessions?デフォルトのセッションタイプはRails 3はまだCookieStoreですよね?SqlSessionStoreをしばらく使用しましたそしてそれはうまく機能しましたが、CookieStoreを支持してそれをやめるかもしれません。
塩漬けの情報であっても、機密情報にCookieStoreを使用することはまだ良い考えではありませんか?
Cookieベースのデフォルトの代わりに、セッションにデータベースを使用します。デフォルトは、機密性の高い情報の保存には使用しないでください
セッションテーブルを作成します
rake db:sessions:create
移行を実行する
rake db:migrate
ActiveRecordを使用してセッションも管理するようにRailsに伝えてください。
config/initializers/session_store.rb:
Rails.application.config.session_store :active_record_store
config/environment.rb:
config.action_controller.session_store = :active_record_store
In Rails 4、 CookieStore Cookieはデフォルトで暗号化および署名されます:
secret_token
のみが設定されている場合、Cookieは署名されますが、暗号化されません。つまり、ユーザーはアプリの秘密キーを知らない限りuser_id
を変更できませんが、user_id
を簡単に読み取ることができます。これはRails 3アプリのデフォルトでした。
secret_key_base
が設定されている場合、Cookieは暗号化されます。これは、暗号化されたCookieをユーザーが変更したり読み取ったりすることができないという点で、署名付きCookieよりも一歩進んでいます。これはRails 4。
secret_token
とsecret_key_base
の両方を設定している場合、Cookieは暗号化され、Rails 3パス。
この回答 は、Rails 4。より長い仕事:
rake db:sessions:create
Rails generate session_migration
これは this answer で指摘されました。 Active Record Session Storeが非推奨になった理由は、 このブログ投稿 に記載されているように、アプリケーションにアクセスするユーザーが多数いると、データベースの読み取り/書き込みが適切にスケーリングされないためです。
... Active Recordセッションストアの1つの大きな問題は、スケーラブルではないことです。データベースに不必要な負荷をかけます。アプリケーションが大量のトラフィックを受信すると、セッションデータベーステーブルは読み取り/書き込み操作で継続的に攻撃されます。
Rails 4の時点で、Active Recordセッションストアはコアフレームワークから削除され、廃止されました。
Active Record Session Storeを引き続き使用する場合は、 gemとして引き続き利用可能 です。
Ruby on Railsセッションの最新のベストプラクティスについては、 Ruby on Railsセキュリティガイド 。
どのプラットフォームでもCookieベースのセッションを処理する方法に変更はないと思います。サーバーの制御を超えるもの(Cookie、フォームポストなど)には懐疑的です。これがWeb開発の一般的な原則です。
暗号化に関しては、その面で何かが変わったかどうかはわかりません。
Cookieストアで注意すべきことは、データ量の制限と、このデータがすべてのリクエストで送信されるという落とし穴です。データベースストアはIDのみを転送し、データはサーバー上に存在します。
FWIW、Rails 3.1は実行を提案します
Rails generate session_migration
ただし、これにより、まったく同じ移行が生成されます
rake db:sessions:create
Railsデフォルトは私にはかなり良いようです-CookieStoreは高速で、ほとんどのユースケースをカバーするはずです。4kbに制限され、データはユーザーに表示されますが、 Rails方法は、整数IDや基本的な文字列値などにのみセッションを使用することです。セッションでオブジェクトや機密性の高い情報を保存しようとしている場合、おそらく間違っています。