Als Session-Speicher habe ich festgestellt, dass redis-rails die Sitzungs-ID im unverschlüsselten Format im Cookie speichert. Sollte Session-ID nicht als sichere Information behandelt werden und nicht unverschlüsselt in einem Cookie offengelegt werden, um Session-Hijacking-Versuche zu vereiteln?Ist es sicher, redis-rails als Session Store zu verwenden?
Antwort
Nr
Die Sitzungs-ID-Cookie ist der einzige (anständig) Weg, um einen Client zu einer Sitzung zu verknüpfen. Der Kunde muss eine Art Anspruch haben, den er mit der Anfrage weitergeben kann, damit wir sie identifizieren können.
Dies gilt unabhängig davon, ob Sie CookieStore, Redis, ActiveRecord oder memcached verwenden.
Das Verschlüsseln der Sitzungskennung mit einem festen Salz oder ohne Salz würde absolut nichts anderes als Zeitverschwendung machen, da der Angreifer bei einem Man-in-the-Middle- oder XSS-Angriff sowieso Zugriff auf den Cookie hat.
Wenn Sie ein Salz verwendet haben, müssen Sie dies auch mit dem Benutzer verknüpfen. Jetzt haben Sie zwei Probleme statt einer.
Während Sie eine Reihe von neuen Ansätze wie Salzen mit dem Benutzer-Agent, ip oder alles andere, was Sie denken, dass Sie über den Client wissen können, die Sicherheitsvorteile sind wenige.
Wie @pvg sagte:
Session-IDs haben lediglich zufällig, unvorhersehbar und ausreichend groß sein.
Bedeutungsvolle Möglichkeiten, um die Sitzung zu schützen sind:
- Verwenden https Man-in-the-Middle-Angriffe zu vereiteln.
- Rufen Sie
reset_session
an, wenn Sie Benutzer ein- und ausloggen, um eine Sitzungsfixierung zu vermeiden. - Sanitize Benutzereingabe XSS zu vermeiden.
- 1. Ist es sicher, gefrorenes Set als Dict-Taste zu verwenden?
- 2. Ist es sicher, ContinueWith als "endlich" -Operation zu verwenden?
- 3. Ist es sicher, sync.Pool Referenz als Kontextwert zu verwenden?
- 4. Ist es sicher, cstdarg zu verwenden?
- 5. Ist es sicher, memcpy so zu verwenden?
- 6. Ist es sicher, BenutzerregEx zu verwenden?
- 7. Wann ist es sicher, .toString() zu verwenden?
- 8. store json Wert als Session in Winkel
- 9. Ist java.io.BufferedOutputStream sicher zu verwenden?
- 10. Ist es sicher, Store-Wert in var für PDO PHP?
- 11. Verwenden einer RESTful API - Ist es sicher?
- 12. Ist es sicher, ein Eingabefeld in einem Audioplayer zu verwenden?
- 13. Ist es sicher, Enums über Interop-Grenzen hinweg zu verwenden?
- 14. Ist es sicher, String-Zuweisung und Compound-Zuweisung zu verwenden?
- 15. Ist es möglich, Spring Boot Session ohne Redis zu verwenden?
- 16. Ist es sicher, _MSVC_LANG anstelle von __cplusplus zu verwenden?
- 17. Ist es sicher, RSA, EVP_PKEY usw. Strukturen wieder zu verwenden?
- 18. jClouds: Ist es sicher, nur einen BlobStore zu verwenden
- 19. Ist es sicher, ein kopiertes Git Repo zu verwenden?
- 20. Ist es wirklich sicher, Java für Echtzeitzwecke zu verwenden?
- 21. Ist es sicher, diese * als Referenz zurückzugeben?
- 22. Ist es sicher zu definieren meine io als global.io
- 23. store HttpContext.Current.Request.Files in Session-Variablen
- 24. Ist es sicher, va_list in ausnahmesicherem Code zu verwenden?
- 25. Ist es sicher, MoreExecutors.directExecutor für Future.sequence zu verwenden?
- 26. Ist es sicher, etcd über mehrere Rechenzentren zu verwenden?
- 27. Ist es sicher, XMLDecoder zum Lesen von Dokumentdateien zu verwenden?
- 28. Ist es sicher, setTimeout im Produktionscode zu verwenden?
- 29. Ist es sicher, die CSS-Eigenschaft "Sichtbarkeit" zu verwenden?
- 30. Ist es sicher, den Stapel unter esp zu verwenden?
Nein, sollten sie nicht, solange sie auf der Durchreise geschützt sind, die https zu decken neigt. – pvg
Die Website verwendet https, aber trotzdem kann jemand weiterhin zufällige Zeichenfolgen als Sitzungs-ID verwenden, um die Sitzung einer anderen Person zu übernehmen. Können sie nicht? P.S Kann ich wissen, warum die Frage abgelehnt wird? – RajeshT
Nein, sie können nicht, es sei denn, die Sitzungen sind vorhersehbar oder sie haben mehr Zeit als das Alter des Universums. Sitzungs-IDs müssen lediglich zufällig, unvorhersehbar und ausreichend groß sein. – pvg