Tobias Kloth: Passwort verschlüsseln

Beitrag lesen

Hallo Andavos,

Man trägt sich auf einer Seite ein (Username + Passwort) und die Daten werden dann an diesen PHP Code gesendet:

<?

verwende besser '<?php', sonst bist du von short_open_tag=on abhängig

$passwort = md5($password);

wo kommt $password hier? übergibst du das in der url (bzw. per Formular mit method="post"?)? Wenn ja, musst du statt $password $_GET['password'] bzw. $_POST['password'] verwenden (bei dir ist vielleicht register_globals auf off (allerdings glaube ich das jetzt nicht, da das eintragen des Namens und des Passwortes ja funktioniert))

(short_tag_open und register_globals sind Einstellungen in der php.ini (der Einstellungsdatei für php - wie die bei dir stehen kannst du mit phpinfo() feststellen)

if (in_array($username,$user_name))

da hast du ja eine Funktion entdeckt, die ich erst vor kurzem kennengelernt habe :-)

fwrite($userdatei, $username);
fwrite($userdatei, "|");
fwrite($userdatei, $passwort);
fwrite($userdatei, "\n");

warum fasst du das nicht alles zu einem String zusammen und schreibst es dann in die Datei?

$password .= "\n";

für was ist das?

$userdata = explode("|", $zeile);
$passw = md5($userdata[1]);

hier verschlüsselst du das gespeicherte Passwort nochmal - das dürfte nicht das sein, was du willst.

if ($userdata[0]==$username and $passw==$password)

statt $passw==$password wäre vermutlich ein md5($_POST['password'])==trim($userdatea[1]) sinnvoller (sofern du das Passwort per post in einem Formularfeld mit dem namen password an die Datei übergibst). Mit trim() entfernst du den Zeilenumbruch hinter dem verschlüsselten Passwort (->http://de2.php.net/trim).

}
}

du solltest dir angewöhnen, deinen Quelltext einzurücken - dann bleibt er lesbarer.

if ($log==1){ ?>

was passiert, wenn auf die Datei auf die die Loginseite verweist mit ?log=1 aufrufst? wenn du "Es geht" hast du ein Sicherheitsloch (register_globals auf off stellen hilft hier)

Dann geht as Login System, bloß man muss nur die user.txt Datei aufrufen, und jeder sieht dann die Usernamen + Passwörter.

dann setzte die Rechte der datei user.txt so, dass sie nicht von jedem aufgerufen werden kann (was aber u.U. nicht gehen wird) alternativ kannst du auch ein ".ht" vor den Dateinamen setzten - dann wird die Datei nicht ausgeliefert (wenn das ganze auf einem Apache läuft)

also bitte nicht mir der Fachsprache anfangen.

ich habe mich bemüht :-)

Ich hab das Internet schon durchsucht,

das _ganze_? :-)

Grüße aus Nürnberg
Tobias

--
Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|