md5 verschlüsselung
ronny
- php
so, hab nun mit hilfe einiger hier meine login hinbekommen. hab dazu jetzt ne rigitration gemacht, die funktioniert auch, das pw wird auch verschlüsselt so wie es soll, nun klappts bei mir nicht mehr mit dem abfragen des logins :(. ich bin echt zu bloed fuer php ;)
damit registriere ich mich
// Passwort verschlüsseln:
$ident = md5($ident);
// Daten in DB schreiben
$connID = @mysql_connect($server, $user, $pass);
@mysql_select_db($dbase, $connID);
$sql = "INSERT INTO meineTabelle (name, email, ident, kennung) VALUES ('$name', '$email', '$ident', '$kennung')";
$result = mysql_query($sql,$connID);
funktioniert auch prima, pw ist verschlüsselt in DB
nun mache ich den login damit:
require("db.php");
$connID = @mysql_connect($server, $user, $pass);
@mysql_select_db($dbase, $connID);
$query = "select * from meineTabelle where name = '$username' and ident = 'md5($password)'";
$my_result = mysql_query ($query);
if (!$my_result) {
// fehlerbehandlung interner fehler
}
if (mysql_num_rows ($my_result) == 1) {
echo"&login=login";
$arr = mysql_fetch_array ($my_result);
// $arr enthält jetzt die Benutzerdaten
} else {
// benutzername / passwort falsch
}
leider gehts net, ohne das md5 und normalen pw funktionierte aber mein login, was ist daran falsch, wie sage ich dem das er das eigegebene pw erst versclüsseln muss, dann vergleichen und dann sagen ok oder nicht ok?
dank euch jetzt schonmal ;)
ronny
Hallo,
ändere einfach diese Zeile:
$query = "select * from meineTabelle where name = '$username' and ident = 'md5($password)'";
$query = "select * from meineTabelle where name = '$username' and ident = '" . md5($password) . "'";
dann sollte es klappen.
Schönen Gruß
Rainer
Hallo,
ändere einfach diese Zeile:
$query = "select * from meineTabelle where name = '$username' and ident = 'md5($password)'";
$query = "select * from meineTabelle where name = '$username' and ident = '" . md5($password) . "'";
dann sollte es klappen.
Schönen Gruß
Rainer
vielen dank, aber es klappt nicht. wenn ich aber als passwort die wilden zeichen aus der db nehme, dann loggt der sich ein, also irgendwo muss noch ein fehler sein...
Hallo,
ändere einfach diese Zeile:
$query = "select * from meineTabelle where name = '$username' and ident = 'md5($password)'";
$query = "select * from meineTabelle where name = '$username' and ident = '" . md5($password) . "'";
dann sollte es klappen.
Schönen Gruß
Rainer
vielen dank, aber es klappt nicht. wenn ich aber als passwort die wilden zeichen aus der db nehme, dann loggt der sich ein, also irgendwo muss noch ein fehler sein...
ach ich bin bloed, es klappt natürlich ;) hatte nur die variable für den namen vertauscht beim prüfen ;) vielen dank
Hi!
ach ich bin bloed, es klappt natürlich ;) hatte nur die variable für den namen vertauscht beim prüfen ;) vielen dank
was mich interessieren würde, funktioniert denn jetzt auch die erste Version? Denn eigentlich ist md5() auch in Mysql implementiert, also müßte es auch gehen!
Grüße
Andreas
Moin,
was mich interessieren würde, funktioniert denn jetzt auch die erste Version? Denn eigentlich ist md5() auch in Mysql implementiert, also müßte es auch gehen!
Ja, aber da heisst es MD5() und darf natürlich nicht innerhalb der Anführungszeichen stehen.
Noch eine Anmerkung zur Vorgehensweise: Die klügere Methode wäre es (IMHO), den verschlüsselten Passwortstring aus der Datenbank auszulesen und in PHP zu vergleichen. Damit haust du einige potentielle Sicherheitsprobleme (die aber noch einen Fehler an anderer Stelle erfordern) weg. Zum Beispiel gab es in der Vergangenheit solche Systeme bei denen es möglich wahr, SQL-Code in die Abfrage einzuschleusen. Wenn man dort die Abfrage in Richtung "SELECT * FROM bla WHERE user=... AND passwort=... OR user=user" umgebogen hat, hatte man die Passwortüberprüfung praktisch umgangen. Eine andere Klasse von Problemen wäre ein Leck der ausgeführten SQL-Befehle (Logdatei, Fehlermeldung, ...) und damit des Passwortstrings.
--
Henryk Plötz
Grüße aus Berlin