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?
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.
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
Angenommen, Ihr Sitzungscookie ist eine GUID, es hat keinen Sinn, sie zu verschlüsseln. Es würde nur eine Pseudozufallszeichenfolge durch eine andere ersetzen.
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.
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.
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:
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.
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.
Tags und Links php session-hijacking