2010-11-06 7 views
6

Ich erstelle eine Login-Funktion auf meiner Website, und ich überlege mir, die Sitzungs-ID auf jeder Seite neu zu erstellen, um die Sicherheit zu erhöhen.PHP "Session_generate_id" und Authentifizierung der Benutzer

Ich habe gelesen PHP: s Informationen über regenerate_id, aber die Beiträge auf der PHP-Seite sind ziemlich anders als die Informationen, die sie über session_regenerate_id bieten.

Könnte jemand erklären, diese beiden Fragen:

  • Muss ich die alte Session-Daten in die neu erzeugte kopieren, oder wird dieser automatisch getan? Codebeispiele werden sehr geschätzt ...

  • Wie überprüfe ich, ob ein Benutzer bereits angemeldet ist? Was soll ich in der Sitzungsvariablen speichern und wie? Code-Beispiele sind sehr geschätzt ...

Dank

Antwort

7

Aufruf session_regenerate_id() auf jeder Seite kann ein wenig zu viel des Guten, auf dem Setup abhängig. Die Funktion wird verwendet, um Session-Hijacking zu verhindern, und sollte immer dann verwendet werden, wenn ein Benutzer seine Berechtigungsebene erhöht (z. B. sich anmeldet). Normalerweise würden Sie zu einer https-Verbindung wechseln, sobald ein Benutzer angemeldet ist, was bedeutet, dass Sie session_regenerate_id() nur einmal aufrufen müssen, da das neue Cookie über eine sichere Verbindung übertragen werden würde und nicht belauscht werden könnte. Wenn Sie jedoch kein SSL-Zertifikat auf Ihrem Server haben, kann das erneute Generieren des Sitzungscookies auf jeder Seite eine gute Option sein.

Wenn Sie session_regenerate_id() aufrufen, müssen Sie Sitzungsdaten nicht kopieren. Das alles wird von PHP für Sie erledigt. Grundsätzlich werden ein neues Sitzungstoken und ein Cookie erstellt, Sitzungsdaten werden in den Sitzungsspeicher kopiert, um mit dem neuen Token verknüpft zu werden, und wenn Sie als einziges Argument der Funktion den Wert true übergeben, wird die alte Sitzungsdatendatei auf der Festplatte gelöscht.

Was Sie in der Sitzung speichern, um anzuzeigen, ob ein Benutzer angemeldet ist, liegt bei Ihnen. Ich habe oft speichern nur einen einfachen Booleschen Wert, um anzuzeigen, wenn sie angemeldet sind, zusammen mit anderen Werten Benutzernamen, Namen zu halten, usw. Dann überprüfen, ob jemand angemeldet ist so einfach wie diese:

<?php 
    if ($_SESSION['logged_in']){ 
     //User logged in 
    } else { 
     //User not logged in 
    } 
?> 

HTH.

Verwandte Themen