Frage

speichert Benutzername & Passwort des Benutzers in einem Cookie eine gute Praxis? Ich möchte wirklich wissen, wie groß Webseiten wie ( Facebook, Digg, Twitter ) damit umgehen. Mein Code ist wie folgt aus:

<?php

$username = mysql_real_escape_string($_POST['username']);
$password = md5($_POST['password']);

?>

Nach jeder erfolgreichen Login speichere ich die $username und die $password (md5) in einem Cookie. Und regeneriert die Session-ID mit session_regenerate_id()


Und den Benutzer zu authentifizieren ich überprüfen, ob eine Login-Sitzung existiert, ansonsten authentifizieren ich die Cookies.

Irgendwelche Ideen? Dank

War es hilfreich?

Lösung

Ich bin ein wenig verwirrt - werden Sie PHP-Sitzungen mit oder Cookies

Wenn Sie die Daten in einer Sitzung ($_SESSION['username'] = 'Tom' etc.) speichern, werden diese Daten nicht im User-Cookie gespeichert.

Wenn Sie die Daten in einem separaten Cookie speichern (für so etwas wie die automatische Anmeldung), könnte man eine andere, zufällige ID stattdessen speichern möchten, und die Benutzer-ID eine Datenbanktabelle nachschlagen.

autologins
----------
key (random hash)
user_id
expires

Andere Tipps

Nur ein md5 nicht genug ist, sollten Sie zumindest ein zufälliges ‚Salz‘ (eine kleine zufällige Zeichenfolge) beinhalten, dass Sie in Ihrer Datenbank gespeichert werden.

Edit: Btw, hat speichern Sie das Kennwort Klartext oder verschlüsselt? Das könnte ein größeres Sicherheitsrisiko sein.

Die gängige Praxis ist es, dem Benutzer eine Session-ID in einem Cookie, entweder selbst oder mit Hilfe von PHP-Sitzungen zu geben. Speichern des Benutzernamen und Passwort-Hash in einem Cookie wird immer noch von einigen Websites getan, aber ich ziehe das erstere. Es ermöglicht Ihnen, den Nutzern mehr Kontrolle über ihre Anmeldungen zu geben, damit sie sehen können, wie viele Sitzungen sie haben und welche IP sind sie aus, zum Beispiel -. GMail für ein gutes Beispiel sehen

Zum Thema Salz und Hashing, sollten Sie das Passwort-Hashes in der Datenbank gesalzen speichern. Im Idealfall sollte das Salz für jeden Benutzer unterschiedlich sein. Für den Fall, dass Ihre Datenbank gestohlen oder ausgesetzt ist, werden diese machen es viel schwieriger für einen Angreifer Passwörter zu bekommen (wenn sie alle das gleiche Salz verwendet sie Rainbow Tables für das Salz erzeugen könnte, das eine lange Zeit in Anspruch nimmt, würden aber lassen sie dann brechen Passwörter sehr schnell). Aus Sicherheitsgründen sollte das Salz auch einige nicht alphanumerische Zeichen enthalten, wie% $ & ^.

Joel L's Antwort ist ein guter. Das einzige, was ich noch hinzufügen möchte, ist, dass anstelle einer zufälligen ID, können Sie den Benutzer einige zusätzliche Informationen hinzufügen könnten zu identifizieren, um es sicherer zu machen.

Verwenden Sie zum Beispiel einen Hash der IP-Adresse des Benutzers und einem Salz, bietet zusätzliche Sicherheit gegen jemanden zu stehlen oder die Sicherheits Cookie des Benutzers Sniffing.

Ich vermute, dass TWITTER so etwas wie diese verwendet, weshalb man nur dauerhaft in Twitter von einem Computer zu einem Zeitpunkt angemeldet werden kann.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top