Moin
Soweit habe ich das glaub ich kapiert, zumindest grundsätzlich, als Sicherheitsrisiko würde ich jetzt nur noch das Verschicken des Passworts vom Client an den Server bezeichnen, oder? Und wenn ich wollte könnte ich das mit deinem Link und dem Javascript auch noch ausräumen, Richtig?
Was ist wenn JS abgeschaltet ist?
Naja, die Amtliche Lösung wäre eher SSL, aber prinzipiell schon. Wenn JavaScript aus ist, wird das Passwort dann halt trotzdem im Klartext verschickt: Daher SSL.
$login = $password . "*" . $username;
Und dann mit Explode() bei * teilen, und jeweils in die DB einragen, oder wie ist das gemeint?
Nein, du sollst den Hash für gar nichts benutzen, ausser zum Vergleichen. Kurzes Beispiel:
Benutzer eintragen:
$benutzer = "test" // Benutzername
$passwort = "hallo" // Passwort
$hash = MD5($passwort.$benutzer);
mysql_query("INSERT INTO Benutzer SET benutzername='".$benutzer."', hash='".$hash."'"); // So oder so ähnlich in die Datenbank eintragen
Benutzername und Passwort überprüfen:
$benutzer = "test";
$passwort = "hallo";
$hash = MD5($passwort.$benutzer);
$result= mysql_query("SELECT benutzername, hash FROM Benutzer WHERE benutzername='".$benutzer."'");
$benutzerdaten=mysql_fetch_array($result);
if($benutzerdaten["hash"] != $hash) { // böse, böse
} else { // ok
}
So oder so ähnlich (ich hab jetzt quasi alle Fehlerüberprüfungen wegfallen lassen)
--
Henryk Plötz
Grüße aus Berlin