Sagen wir, ich habe eine kryptografisch sichere, zufällig generierte Zeichenfolge, und ich füge ein Trennzeichen und die Benutzer-ID des Benutzers an diese an und verwende diese als Sitzungs-ID. Der Anwendungsfall soll Kollisionen verhindern. Wird dies mein System weniger sicher machen, als wenn ich nur die zufällig generierte Zeichenfolge verwenden würde?Wird die Benutzer-ID an die Sitzungs-ID angehängt?
Antwort
Lassen Sie uns die Antwort in zwei Annahmen aufgeteilt:
Wenn Sie bereits die Benutzer-ID auf andere Weise (anderes Feld, verschiedene Plätzchen, etc.) senden, und es wäre für einen Angreifer mit Zugriff auf die Session-ID sichtbar sein Dann fügt Ihr Ansatz der Implementierung keine Angriffsfläche hinzu und das Risiko bleibt somit gleich.
Wenn die Benutzer-ID sonst nicht gesendet wird, stellen Sie einem Angreifer zusätzliche Informationen zur Verfügung, die bei anderen Angriffen möglicherweise missbraucht werden. Wie gefährlich das ist, hängt von der Wichtigkeit der Benutzer-ID in Ihrer Anwendung ab.
Zuletzt mache ich mir Sorgen um Ihre Argumentation. Wenn es eine vernünftige mathematische Wahrscheinlichkeit einer Kollision gibt, dann ist Ihre SessionID nicht lang genug für den Zweck, in dem Sie versuchen, es zu verwenden. Err auf der sicheren Seite.
Wenn Kollisionen ein Risiko darstellen, enthält Ihre Sitzungskennung keine Beinahe-Entropie, um sicher zu sein.
Von OWASP Session Management Cheat Sheet:
Wenn eine Session-ID mit einer Entropie von 64 Bits verwendet wird, wird es einen Angreifer mindestens 292 Jahre dauern, bis erfolgreich eine gültige Session-ID erraten, die Angreifer unter der Annahme, kann versuchen, 10.000 Vermutungen pro Sekunde mit 100.000 gültig gleichzeitigen Sitzungen in der Web-Anwendung
Also, wenn Ihre Sitzungskennung erfolgreich ohne auch nur versuchen erraten werden könnte, haben Sie größere Probleme. Wenn das System selbst Identifikatoren erzeugt, die kollidieren, muss Ihre Entropiequelle dringend überprüft werden.
Um Ihre Frage zu beantworten, besteht das Risiko der Einführung einer Benutzer-ID darin, dass ein Angreifer, wenn Ihre Sitzungskennungen jemals durchgesickert sind, sofort die saftigen identifizieren kann. Das sind die von Administratoren oder Root-Accounts. Wenn Sie Code hinzufügen, erhöht sich auch die Komplexität Ihrer Anwendung. Sicherheit ist am besten, wenn sie so einfach wie möglich gehalten wird, um die Risiken zu bewältigen, denen die Anwendung ausgesetzt ist. Und zusätzlicher Code bedeutet mehr Angriffsfläche und die zusätzliche Möglichkeit von Implementierungsschwachstellen.
Zusammenfassend stellen Sie sicher, dass Ihre Sitzungskennungen eine Entropie von mindestens 64 Bit haben und dass die Quelle der Entropie gut ist (z. B. verwenden Sie einen CSPRNG statt eines PRNG oder verwenden Sie Entropiequellen, die für Ihre Anwendung einzigartig sind).
- 1. Wird json.dump() an Datei angehängt?
- 2. Wie die Version eines Ereignisses an einen Stream angehängt wird
- 3. Die Datenbank wird nicht an das Projekt angehängt
- 4. ansible ec2_metric_alarm wird nicht an die automatische Skalierungsrichtlinie angehängt
- 5. Wie wird der Vorschlag an die Texteingabe angehängt?
- 6. JSP-Fehlerseite an die vorherige Ausgabe angehängt
- 7. String-Literal wird nicht an DOM angehängt
- 8. Warum wird jsessionid an jede URL angehängt?
- 9. Wie wird GestureDetector an eine ListPreference angehängt?
- 10. Docker wird nicht an ein Bild angehängt
- 11. Wird nicht standardmäßig Object.toString() an hashCode() angehängt?
- 12. Wie wird die wissenschaftliche Notation für Double deaktiviert, wenn sie an ostringstream angehängt wird?
- 13. Kann keine JQuery-Methoden verwenden, die an "this" angehängt sind.
- 14. URL, die am Ende mit einer Zeichenfolge angehängt wird
- 15. jQuery Datatable dynamische Bearbeitungsschaltfläche, die an jede Zeile angehängt ist
- 16. Werden Zufallsdaten, die an ein JPG angehängt werden, unbrauchbar?
- 17. Bilder, die nicht an E-Mail angehängt sind
- 18. Eine Variable kann nicht an die Ajax-URL angehängt werden
- 19. Acumatica Wie man Dateien durchläuft, die an Project angehängt sind?
- 20. Warum ist alle Daten an die Liste angehängt zu werden
- 21. C++ Warum wird die Datei nicht angehängt oder überschrieben?
- 22. Wie kann ich die Daten anpassen:: Bestätige Popup, um nach einer Eingabe zu fragen, die an die Anfrageparameter angehängt wird?
- 23. jsessionID wird an die URL beim Ausführen von GAE devserver angehängt
- 24. Sammel-URL funktioniert nicht, wenn der Sammlungsname für VSTS an die Account-URL angehängt wird
- 25. bash sed, wie an den Zeilenanfang angehängt wird, die Variable am Anfang der Zeile entspricht
- 26. Wie wird die Kamera an ein Player-Objekt angehängt, das von HLAPI Network Manager instanziiert wurde?
- 27. Wie wird der Vivus-Listener an die Scroll eines div angehängt?
- 28. Selen: Wie wird RemoteDriver immer an die aktuelle Browser-Registerkarte angehängt?
- 29. Wie Inhalte mehrerer Dateien an eine Zieldatei angehängt werden, indem die Schleife verwendet wird
- 30. Angular - beim Aktualisieren der Seite wird der Schrägstrich an die URL angehängt
Ich fühle mich wie diese Frage würde besser für http://security.stackexchange.com/ passen – Derek