Hat jemand Tipps zu "Best Practices" für Rails und Sessions? Der Standard-Sitzungstyp für Rails 3 ist immer noch CookieStore, oder? Ich habe SqlSessionStore eine Weile benutzt und es hat gut funktioniert, aber ich kann mich zugunsten von CookieStore davon entfernen.
Ist es immer noch keine gute Idee, CookieStore für vertrauliche Informationen zu verwenden, selbst bei gesalzenen Informationen, oder ist das besser in der Datenbank gespeichert?
ruby-on-rails
ruby
session
cookies
Lukas
quelle
quelle
Antworten:
Verwenden Sie die Datenbank für Sitzungen anstelle der Cookie-basierten Standardeinstellung, die nicht zum Speichern streng vertraulicher Informationen verwendet werden sollte
Erstellen Sie die Sitzungstabelle mit
Führen Sie die Migration aus
Stellen Sie sicher, dass Sie Rails auch anweisen, ActiveRecord zum Verwalten Ihrer Sitzungen zu verwenden.
Schienen 3
config / initializers / session_store.rb:
Schienen 2
config / environment.rb:
quelle
rake db:sessions:create
ist in Rails 4 veraltet und wird entfernt, da es für Anwendungen mit vielen Benutzern nicht gut skalierbar ist (zu viele Datenbanklese- und -schreibvorgänge). Siehe Rails 4.0, Rake DB: Sessions: Create .Cookies werden in Rails 4 standardmäßig verschlüsselt
In Rails 4 werden CookieStore- Cookies standardmäßig verschlüsselt und signiert:
Der Active Record Session Store ist in Rails 4 veraltet
Diese Antwort ist in Bezug auf Rails 4 nicht mehr aktuell. Der Active Record Session Store wurde veraltet und aus Rails entfernt, sodass die folgenden Generatoren nicht mehr funktionieren:
rake db:sessions:create
rails generate session_migration
Darauf wurde in dieser Antwort hingewiesen . Der Grund dafür, dass der Active Record Session Store veraltet war, liegt darin, dass die Lese- / Schreibvorgänge in die Datenbank nicht gut skaliert werden können, wenn eine große Anzahl von Benutzern auf Ihre Anwendung zugreift, wie in diesem Blogbeitrag angegeben :
Wenn Sie den Active Record Session Store weiterhin verwenden möchten, ist er weiterhin als Juwel verfügbar .
Best Practices für aktuelle Rails-Sitzungen
Für aktuellere Best Practices für Ruby on Rails-Sitzungen empfehlen wir Ihnen, die neuesten Versionen des Ruby on Rails-Sicherheitshandbuchs zu lesen .
quelle
Ich glaube nicht, dass sich etwas daran geändert hat, wie jemand auf einer Plattform mit Cookie-basierten Sitzungen umgehen sollte. Seien Sie skeptisch gegenüber allem, was außerhalb der Kontrolle des Servers liegt (Cookies, Formularbeiträge usw.). Dies ist ein allgemeines Prinzip der Webentwicklung.
Was die Verschlüsselung betrifft, weiß ich nicht, ob sich an dieser Front etwas geändert hat.
Bei einem Cookie-Speicher ist zu beachten, dass die Datenmenge begrenzt ist und dass diese Daten bei jeder Anforderung auf dem Kabel gesendet werden, wenn ein Datenbankspeicher nur die ID überträgt und die Daten auf dem Server gespeichert sind .
quelle
FWIW, Rails 3.1 schlägt vor zu laufen
Dies erzeugt jedoch genau die gleiche Migration wie
quelle
db:sessions:create
ruft die Rechenaufgabe jetzt direkt densession_migration
Generator auf. task: create =>: environment löst "Task für diese Datenbank nicht verfügbar (keine Migrationsunterstützung)" aus, es sei denn, ActiveRecord :: Base.connection.supports_migrations? erfordern 'Schienen / Generatoren' Rails :: Generators.configure! erfordern 'Rails / Generators / Rails / Session_Migration / Session_Migration_generator' Rails :: Generators :: SessionMigrationGenerator.start [ENV ["MIGRATION"] || "add_sessions_table"] endrake db:sessions:create
undrails generate session_migration
Generatoren sind veraltet und entfernt in Rails 4, weil sie für Anwendungen mit vielen Benutzern nicht gut skalieren (zu viele Datenbank liest und schreibt). Siehe Rails 4.0, Rake DB: Sessions: Create .Die Rails-Standardeinstellungen scheinen mir ziemlich gut zu sein. Der CookieStore ist schnell und sollte die meisten Anwendungsfälle abdecken. Sicher, Sie sind auf 4 KB beschränkt und Ihre Daten sind für den Benutzer sichtbar. Die Rails-Methode besteht jedoch darin, die Sitzung nur für ganzzahlige IDs und grundlegende Zeichenfolgenwerte zu verwenden. Wenn Sie versuchen, Objekte oder streng vertrauliche Informationen in einer Sitzung zu speichern Du machst es wahrscheinlich falsch.
quelle