MD5 Verschlüsselung.

soa

Erfahrenes Mitglied
Hallo,

eigentlich sind es 2 Sachen um die es mir geht:

Zum Einen habe ich ein kleines Problem mit dem MD5 Schlüssel beim Login.

Ich habe ein Login via MySql und schreibe die Passwörter mit MD5 in die DB.
Das klappt soweit. Beim Einloggen habe ich jedoch Probleme mit dem Abgleich des Passwortes.

PHP:
 function check_user($name, $passwort)
    {
    dbVerbinden();
    $sql="SELECT id
    FROM <table>
    WHERE benutzername='".$name."' AND passwort='".$passwort."'
    LIMIT 1";
    $result= mysql_query($sql) or die(mysql_error());
    if ( mysql_num_rows($result)==1)
    {
        $user=mysql_fetch_assoc($result);
        return $user['id'];
    }
    else
        return false;
     }

Das ist meine Login Funktion. Aufgerufen wird diese wie folgt:

PHP:
$password = md5($passwort);
   
       $UserId=check_user($benutzername, $password);
       
       if ($UserId!=false)
       {
        login($UserId);

........

Leider funktioniert das so nicht ganz und ich weiss nicht so recht warum ?

So, nun habe ich eine Sperre via Session in allen Dateien:

PHP:
$ip =  $_SERVER['REMOTE_ADDR'];

if(!$_SESSION["benutzer"]  || $_SESSION['benutzer'] == "")
   {
   $fehler = "Sie haben nicht die Berechtigung mit dem System zu arbeiten.<br>
              Ihre IP - Adresse ( '.$ip.' ) wird aus Sicherheitsgründen im System gespeichet"; 
   echo '<head><meta http-equiv="refresh" content="0;    URL=index.php?fehler='.$fehler.'"></head>'; 
   }
else
{
..............

Wie sicher ist denn so eine Sperre mit Hilfe der Session. Gibt es vielleicht sicherere Varianten ?


Vielen Dank im voraus.

VG
SOA
 
Nutzt Du moeglicherweise beim Eintrag in die Datenbank die MD5-Funktion von MySQL?

Und uebrigens, MD5 ist immer noch keine Verschluesselung. :D
 
Nein, ich nutze nicht den MD 5 Algorithmus von SQL , sondern die normale md5() Funktion von php . Ich kann mich trotzdem nicht anmelden.


Also : $password = md5($passwort);

Und $password via INSERT in die DB.

MD5 ---> :) Entschuldigen Sie vielmals , wie soll man das Kind denn benennen ?kryptografische Hash Funktion.

Wie schaut es mit der 2. Frage aus ? Ist grundsätzlich eine Sperre anhand von einer Session Abfrage ausreichend. Wie macht ihr sowas ?


VG
 
Ob Du MD5 am mySQL nutzt oder md5() in PHP bleibt sich prinzipiell gleich, weil sie die selben Werte produzieren. In was für ein Feld schreibst Du denn den Hash hinein? Nicht daß es Dir beim reinschreiben ein paar Stellen abschneidet.

IP-Sperren bringen eigentlich ziemlich wenig. Wenn sich jemand halbwegs auskennt, stellt er sich einen Proxy im Browser ein und kommt wieder auf die Seite. Ob Du das jetzt mit Sessions machst oder mit irgendwas anderem ist da auch schon egal.
lg
 
cmyk-vienna hat gesagt.:
Ob Du MD5 am mySQL nutzt oder md5() in PHP bleibt sich prinzipiell gleich, weil sie die selben Werte produzieren.
Ich selbst hab bisher nicht mit dem MD5 von MySQL gearbeitet, aber auf der Arbeit haben wir eine Funktion um Passwoerter mit Java mittels MD5 zu hashen und die gibt andere Werte zurueck als die Funktion von PHP. Um die gleichen Werte wie die Funktion von Java zu bekommen muss ich den optionalen Parameter der Funktion md5() (also raw_output) true setzen. Daher hatte ich einfach mal in diese Richtung spekuliert ob das vielleicht auch der Fall ist wenn man PHP-MD5-Hashes mit MySQL-MD5-Hashes vergleicht.
 
@Dennis:

Wie kann sowas denn sein? MD5 ist doch ein standartisierter Allgo, da sollte schon das gleiche rauskommen egal ob aus Java oder PHP oder sonst wo. Es sei denn der Hash ist salted, dann natürlich nicht...
 
Hallo,

Sinac hat gesagt.:
Wie kann sowas denn sein? MD5 ist doch ein standartisierter Allgo, da sollte schon das gleiche rauskommen egal ob aus Java oder PHP oder sonst wo.
Der Algorithmus kann durchaus identisch sein, aber die Darstellung des Ergebnisses beispielsweise nicht (Zeichenkette mit Hexwerten <-> Binärwert). Es kann auch vorkommen, dass beim Hashen von Zeichenketten mit verschiedenen Zeichensätzen gearbeitet wird und dadurch unterschiedliche Werte entstehen.

Grüße,
Matthias

PS: Es heißt standardisiert. Das kapiert auch ein sehr sehr großer Teil der Leute nie :D
 
Meiner Erfahrung nach produzieren mySQL- und php-MD5 die gleichen Werte. Zumindest bin ich noch auf kein Gegenbeispiel gestoßen. Ob und inwiefern es bei Sonderzeichen zu Abweichungen kommen kann, hab ich noch nicht ausprobiert.

Ich möchte jetzt den Thread nicht hijacken, aber ich hab bei der Gelegenheit auch noch ne kurze Zwischenfrage zum Thema:
Ich hab eine JavaScript-Umsetzung von MD5 gefunden. Erhöht das eigentlich die Sicherheit bei Loginsystemen? Weil an und für sich würden ja dann Passwörter überhaupt nicht mehr im Klartext übertragen werden.
 
Zurück