Wie wird die Sitzungs-ID in einem Cookie verschlüsselt?

7

Während ich über Session-Hijacking-Artikel gelesen habe, habe ich gelernt, dass es schön wäre, den Session-ID-Wert zu verschlüsseln, der in einem Cookie gespeichert ist.

Soweit ich weiß, verschlüsselt PHP den Sitzungs-ID-Wert in einem Cookie nicht, wenn ich eine Sitzung durch Aufruf von session_start() starte.

Wie verschlüssele ich den Sitzungs-ID-Wert und initialisiere dann die Sitzung damit?

    
Moon 11.04.2010, 00:13
quelle

8 Antworten

18

Verschlüsselung wird nicht helfen. Der Session-Cookie ist sowieso nur eine magische Zahl. Verschlüsseln bedeutet nur, dass es eine andere magische Zahl gibt, die entführt werden kann. Abhängig davon, welche Hijacking-Szenarien Sie im Auge haben, gibt es andere mögliche Abschwächungen. Sie können beispielsweise Sitzungen auf eine einzelne IP beschränken. Dies wirft jedoch einige Probleme auf, z. Leute wechseln zwischen drahtlosen Punkten.

    
Matthew Flaschen 11.04.2010, 00:17
quelle
5

Es ist wichtiger, dass Ihre Sitzungs-IDs zufällig sind (das heißt, jemand kann seine Sitzungs-ID nicht dazu verwenden, eine andere Person zu erraten), da die tatsächliche Gefahr darin besteht, dass jemand die Sitzungs-ID eines anderen Benutzers erhält. Solange Sie sie wirklich zufällig halten, gibt es keinen Grund oder Nutzen, sie zu verschlüsseln

    
Michael Mrozek 11.04.2010 00:18
quelle
3

Angenommen, Ihr Sitzungscookie ist eine GUID, es hat keinen Sinn, sie zu verschlüsseln. Es würde nur eine Pseudozufallszeichenfolge durch eine andere ersetzen.

    
Marcelo Cantos 11.04.2010 00:17
quelle
1

Leider wird das Verschlüsseln der Sitzungs-ID die Sicherheit nicht wesentlich erhöhen, da der Angreifer nur das verschlüsselte Formular verwenden kann (das ist das einzige, was für sie sowieso sichtbar ist).

Das einzige, was dies verhindern könnte, ist der Trick, bei dem Sie jemandem einen Link mit "PHPSESSID = foo" senden, was dazu führt, dass PHP diese Sitzung erstellt. Sie können dies verhindern, indem Sie Verschlüsselung und Validierung verwenden, aber Sie sollten die Sitzungs-ID-Übertragung in der URL vollständig deaktivieren.

    
Matti Virkkunen 11.04.2010 00:18
quelle
1

Es ist immer eine gute Idee, sich niemals nur auf einen Cookie oder ein Element zu verlassen, um Ihre (eingeloggten) Benutzer zu validieren. Wie oben erwähnt, ist es eine gute Idee, auch die IP zu speichern und damit zu überprüfen. Eine gute Ergänzung wäre das Speichern des USER_AGENT.

Denken Sie daran, dass Sie, wenn Ihre Anwendung auf Open Source basiert, genauso gut mit einer Session-ID umgehen können, da der Hacker leicht erkennen kann, gegen was Sie sich entscheiden.

    
kamasheto 11.04.2010 00:34
quelle
1

Machen Sie dieses Skript, greifen Sie von einem Webbrowser darauf zu und überprüfen Sie dann Ihre Cookies.

%Vor%

Sie werden wahrscheinlich so etwas sehen

%Vor%

PHP macht gute Arbeit, wenn es eine nette, eindeutige ID erzeugt. Es hat keinen Sinn, das zu verschlüsseln.

    
maček 11.04.2010 00:23
quelle
0

Die Sitzungs-ID ist relativ unerkennbar, also ist das nicht wirklich das Problem.

Es gibt einige Dinge, die Sie tun können, um Angriffen entgegenzuwirken:

  • Erstellen Sie eine neue Sitzung, wenn sich ein Benutzer anmeldet
  • begrenzen Sie die Länge einer Sitzung

Es gibt noch einige andere Dinge. Ich empfehle immer, den Rails Guide zu diesen Problemen zu studieren - er bietet eine sehr leicht verständliche Erklärung von Bekannte Probleme und Gegenmaßnahmen - alle gleichermaßen für PHP-Code anwendbar.

    
ndp 11.04.2010 04:29
quelle
0

Es ist sinnvoll, Cookie-Daten zu verschlüsseln, wenn Sie Cookies verwenden, um vertrauliche Informationen zu speichern. dass nur der Server lesen (entschlüsseln) sollte.

Es gibt keinen Grund, die Session-ID zu verschlüsseln, da der Hacker diese verschlüsselte Session-ID verwenden kann, um sich als sein Opfer auszugeben.

    
John Smith 11.06.2016 17:34
quelle

Tags und Links