Rails de sessions pratiques actuelles
N'importe qui ont des "meilleures pratiques" des conseils pour les Rails et les séances? La valeur par défaut type de session pour Rails 3 est encore CookieStore, droit? J'ai utilisé SqlSessionStore pendant un certain temps et il a bien fonctionné, mais je peux me déplacer loin de celle en faveur de CookieStore.
Est-il pas toujours une bonne idée d'utiliser CookieStore pour les informations sensibles, même avec salé info ou est-ce mieux stockées dans la base de données?
- Aussi, quelles sont les réflexions actuelles autour de l'utilisation de Memcached pour le stockage de session?
- Connexes: rails 4.0, rake db:sessions:créer.
Vous devez vous connecter pour publier un commentaire.
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
Exécuter la migration
Assurez-vous de dire à rails à utiliser ActiveRecord pour gérer vos sessions de trop.
Rails 3
config/initializers/session_store.rb:
Rails 2
config/environment.rb:
rake db:sessions:create
est obsolète et retiré dans les Rails 4, car il n'est pas à l'échelle pour des applications avec de nombreux utilisateurs (trop de base de données en lecture et en écriture). Voir rails 4.0, rake db:sessions:créer.Cookies sont cryptés par défaut dans les Rails 4
Dans les Rails 4, CookieStore les cookies sont cryptées et signées par défaut:
Active Enregistrement d'une 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
a déclaré dans ce blog:
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 la Ruby on Rails Guide de Sécurité.
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.
FWIW, rails 3.1 suggère de course
Cependant cela génère exactement la même migration comme
db:sessions:create
maintenant directement invoque lesession_migration
générateur. tâche :créer => :environnement soulèvent "Tâche indisponible à cette base de données (pas de prise en charge des migrations)", à moins d'ActiveRecord::Base.connexion.supports_migrations? besoin de rails ou de générateurs de Rails::Générateurs.configurer! besoin d'rails/générateurs/rails/session_migration/session_migration_generator' Rails::Générateurs::SessionMigrationGenerator.démarrer [ ENV["MIGRATION"] || "add_sessions_table" ] finrake db:sessions:create
etrails generate session_migration
générateurs sont obsolètes et retiré dans les Rails 4, parce qu'ils ne sont pas à l'échelle pour des applications avec de nombreux utilisateurs (trop de base de données en lecture et en écriture). Voir rails 4.0, rake db:sessions:créer.Les Rails par défaut semblent assez bon pour moi - Le CookieStore est rapide et devrait couvrir la majorité des cas d'utilisation. Assurez-vous que vous êtes limité à 4 ko et vos données seront visibles pour l'utilisateur, mais les Rails façon est d'utiliser de la session pour des choses comme integer Id de base et les valeurs de chaîne - Si vous essayez de stocker des objets ou des informations hautement confidentielles dans la session, vous êtes probablement de faire le mal.