86 votes

Pratiques actuelles en matière de séances rails

Quelqu'un a des conseils de « pratiques exemplaires » pour les Rails et les séances ? Le type de session par défaut pour Rails 3 est toujours cookies, droit ? J’ai utilisé SqlSessionStore pendant un moment et il a bien fonctionné, mais je peux s’éloigner qu’en faveur de cookies.

N’est-il toujours pas une bonne idée d’utiliser des cookies pour des informations sensibles, même avec les infos salés ou mieux que stocké dans la DB ?

102voto

Volcanic Points 1438

Utiliser la base de données pour les séances au lieu de les cookies par défaut, qui ne devrait pas être utilisé pour stocker des informations hautement confidentielles

Créer la table de session avec

rake db:sessions:create

Exécuter la migration

rake db:migrate

Assurez-vous aussi de dire à rails à utiliser ActiveRecord pour gérer vos sessions de trop.

Rails 3

config/initializers/session_store.rb:

Rails.application.config.session_store :active_record_store

Rails 2

config/environment.rb:

config.action_controller.session_store = :active_record_store

55voto

Cupcake Points 22154

Les Cookies sont cryptées par défaut dans les Rails 4

Dans les Rails 4, CookieStore les cookies sont cryptées et signées par défaut:

Si vous n'avez qu' secret_token ensemble, vos cookies seront signés, mais pas chiffré. Cela signifie qu'un utilisateur ne peut pas modifier leur user_id sans le savoir à vos l'application de la clé secrète, mais on peut facilement lire leur user_id. C'était le défaut pour Rails 3 apps.

Si vous avez secret_key_base ensemble, vos cookies seront cryptées. Cela va un plus loin que l'signé cookies dans chiffrées pour les cookies ne peuvent pas être modifiés ou lu par les utilisateurs. C'est le départ par défaut dans les Rails 4.

Si vous avez à la fois secret_token et secret_key_base ensemble, vos cookies être chiffré et signé cookies générés par les Rails 3 seront en toute transparence lire et cryptées pour assurer une surface lisse chemin de mise à niveau.

Active Record Session Magasin est Déconseillée dans les Rails 4

Cette réponse est maintenant out-of-date, à l'égard de Rails 4. L'Enregistrement Actif Session Magasin a été désapprouvée et retiré de Rails, donc la suite les générateurs ne fonctionne plus:

  • rake db:sessions:create

  • rails generate session_migration

Cela a été souligné dans cette réponse. La raison que l'Enregistrement Actif Session Magasin a été désapprouvé est parce que les lectures/écritures dans la base de données n'est pas l'échelle lorsque vous avez un grand nombre d'utilisateurs d'accéder à votre application, comme indiqué dans ce post de blog:

...l'un des principaux problèmes avec l'Enregistrement Actif session magasin, c'est qu'il n'est pas évolutive. Il met une charge inutile sur votre base de données. Une fois votre demande reçoit une grande quantité de trafic, les séances de table de base de données est constamment bombardés avec des opérations de lecture/écriture.

Comme de Rails 4, l'Enregistrement Actif session magasin dispose d'être retiré de la base cadre et est maintenant obsolète.

Si vous voulez continuer à utiliser l'Actif Enregistrement d'une Session de Magasin, c'est toujours disponible comme un bijou.

Actuel Rails Session Meilleures Pratiques

Pour plus de meilleures pratiques actuelles pour Ruby on Rails séances, je vous conseille de les découvrez les dernières versions de Ruby on Rails Guide de la Sécurité.

9voto

Tilendor Points 9622

Je ne crois pas que quelque chose a changé dans la façon dont n'importe qui sur n'importe quelle plateforme doit gérer les cookies de sessions. Être sceptique sur tout ce qui passe au-delà du contrôle du serveur (cookies, formulaire de postes, etc.) C'est un principe général de développement web.

Autant le cryptage, je ne sais pas si quelque chose a changé sur ce front.

Quelque chose d'être conscient de avec un cookie store est la limite à la quantité de données, et la chasse aux sorcières que ces données seront envoyées sur le câble dans chaque requête, où, comme un magasin de base de données transfère seulement les id et les données de la vie sur le serveur.

4voto

Nate Milbee Points 61

FWIW, rails 3.1 suggère en cours d’exécution

Toutefois, cela génère la migration même exacte comme

2voto

Yarin Points 18186

Les valeurs par défaut de Rails semblent assez bons pour moi-The cookies est rapide et devrait couvrir la majorité des cas d’utilisation. Bien sûr, vous êtes limité à 4 Ko et vos données seront visibles par l’utilisateur, mais la façon dont les Rails est d’utiliser session pour des choses comme integer ID et des valeurs de chaîne de base - si vous essayez de stocker des objets ou des informations hautement confidentielles en session que vous le faites probablement mal.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X