2016-08-16 6 views
0

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?

+1

Ich fühle mich wie diese Frage würde besser für http://security.stackexchange.com/ passen – Derek

Antwort

1

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.

0

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).

Verwandte Themen