DrBonsai
Mitglied
N'Abend zusammen,
ich bin nicht gerade ein großer Experte, was Sicherheit in php angeht.
Habe mich heute aber mal ein bisschen mit SESSION-hijacking befasst.
Wenn ich es richtig verstanden habe, sollte man dies verhindern, indem man vor jeder Abfrage prüft, ob der ausführende client, auf dem die login-session existiert, der Gleiche ist, auf dem die session eröffnet wurde, richtig?
Mein Ansatz ist deshalb der Folgende:
beim login merke ich mir einige Informationen des Browsers:
Danach prüfe ich bei jedem Seiten-Aufruf, ob ein Nutzer eingeloggt ist und wenn ja, ob der Fingerabdruck des Nutzers dem entspricht, der beim Einloggen erstellt wurde.
Ist das einigermaßen sicher, oder ist das blöder Unsinn?
mfg,
David
ich bin nicht gerade ein großer Experte, was Sicherheit in php angeht.
Habe mich heute aber mal ein bisschen mit SESSION-hijacking befasst.
Wenn ich es richtig verstanden habe, sollte man dies verhindern, indem man vor jeder Abfrage prüft, ob der ausführende client, auf dem die login-session existiert, der Gleiche ist, auf dem die session eröffnet wurde, richtig?
Mein Ansatz ist deshalb der Folgende:
beim login merke ich mir einige Informationen des Browsers:
PHP:
/*Wenn Loginformular korrekt ausgefüllt wurde:*/
session_regenerate_id(); /*verhindert session-fixation*/
$_SESSION['fingerprint'] = md5($_SERVER['HTTP_ACCEPT'].$_SERVER['HTTP_USER_AGENT']); /*Informationen über browser der eingeloggten Person*/
PHP:
/*SESSION Hijacking verhindern bei jedem Seitenaufruf:*/
if(isset($_SESSION['client_id']) or isset($_SESSION['dealer_id'])) /*Wenn jemand eingeloggt ist*/
{
if($_SESSION['fingerprint'] != md5($_SERVER['HTTP_ACCEPT'].$_SERVER['HTTP_USER_AGENT'])) /*Wenn der user nicht auf dem Browser ist, auf dem die Session erstellt wurde*/
{
session_destroy();
session_unset();
session_write_close();
setcookie(session_name(),'',0,'/');
session_regenerate_id(true);
header("Location: ./");
}
}
Ist das einigermaßen sicher, oder ist das blöder Unsinn?
mfg,
David