Passwort - MD5

Hallo,

ich bin blutiger PHP Anfaenger und lerne - wie frueher HTML - aus Beispielen.

Hier habe ich einen Code fuer den Aufruf passwortgeschuetzter Seiten.

<?php $member['John'] = array('pw'=>'1234' , 'level'=\>2 , 'pp'=\>'./red\_page.php'); $member['Tim'] = array('pw'=\>'pw33' , 'level'=\>2 , 'pp'=\>'./blue\_page.php'); $member['Lisa'] = array('pw'=\>'OhNo' , 'level'=\>1 , 'pp'=\>'./green\_page.php'); $message[0] = 'Please log in.'; $message[1] = 'Bad login. Please try again.'; $message[2] = 'You have been logged out.'; # No edits beyond this line session\_start(); $status = 0; if ($\_SERVER['REQUEST\_METHOD'] == 'POST') { $username = isset($\_POST['username']) ? $\_POST['username'] : ''; $password = isset($\_POST['password']) ? $\_POST['password'] : ''; if (isset($member[$username]) && $member[$username]['pw'] == $password) { $\_SESSION['logged\_in'] = true; $\_SESSION['ip'] = $\_SERVER['REMOTE\_ADDR']; $\_SESSION['level'] = $member[$username]['level']; header('Location: ' . $member[$username]['pp']); exit; } $status = 1; } elseif (isset($\_SESSION['logged\_in'])) { unset($\_SESSION['logged\_in']); unset($\_SESSION['ip']); unset($\_SESSION['level']); $status = 2; } ?\> Nun moechte ich die Passwoerter als MD5 im Code eingeben. reicht es dann dafuer, zwischen den beiden Zeilen $username = isset($\_POST['username']) ? $\_POST['username'] : ''; $password = isset($\_POST['password']) ? $\_POST['password'] : ''; dieses hier: $password = md5($password); einzufuegen? Gruss Michael
if (isset($member[$username]) && $member[$username]['pw'] ==
 **md5($password)**) {

wo auch immer du md5 benutzt , ich wĂŒrde es beim vergleich machen .

Nun moechte ich die Passwoerter als MD5 im Code eingeben.
reicht es dann dafuer, zwischen den beiden Zeilen

$username = isset($_POST[‚username‘]) ? $_POST[‚username‘] :
‚‘;
$password = isset($_POST[‚password‘]) ? $_POST[‚password‘] :
‚‘;

dieses hier:
$password = md5($password);
einzufuegen?

Hi mischamischer,

du meinst wohl eher nach den beiden Zeilen, oder? :smile: dazwischen hast du die variable $password ja noch gar nicht gesetzt. Aber so kannst du das dann natĂŒrlich machen.

Wo du das Passwort dann ver-MD5-st, ist dann deine Entscheidung.

Generell solltest du beachten, dass MD5 weniger fĂŒr PasswortverschlĂŒsselungen geeignet ist, da sich die Hashes mit der Brute-Force Methode schnell zurĂŒck-hashen lassen. Infos hierzu:

http://www.php.net/manual/de/faq.passwords.php#faq.p


Solltest du wirklich eine kritische Applikation schreiben wollen, mach dir lieber genauere Gedanken darĂŒber wie du das machen willst und recherchiere ein wenig.

Die eigentlich „sicherste“ Methode mit Passwörtern zu arbeiten, ist die Passwörter per „one time key“ (hierzu gibt es einige interessante Lösungen mit extra Servern die deine „Key-Verwaltung“ darstellen), den beide Systeme(client und Server) nur wĂ€hrend dem einen Request kennen, auf dem client zu verschlĂŒsseln, und das verschlĂŒsselte Passwort ohne Key dann erst per POST zu ĂŒbergeben. Denn so ein Post lĂ€sst sich mit bestimmten Mitteln (z. B. Burp Suite) abfangen und dann das Klartext-Passwort auslesen.
Aber ehrlich gesagt muss ich zugeben dass ich mit derart kritischen Systemen PHP Seitig selbst noch nicht arbeiten musste.

Aber fĂŒr kleine unkritische Applikationen ohne viel Datenschutzaspekte kannst du MD5 natĂŒrlich hernehmen. Außerdem ist das natĂŒrlich ein guter Weg PHP zu lernen. :smile:
Wollte dir nur sagen dass hier der einfachste, nicht gleich der beste Weg ist, mit Logins zu arbeiten. :smile:

lg

Artur

Hallo Artur,

herzlichen Dank fuer die Antwort.
War mir gleich ein Sternchen wert.

Leider bin ich noch nicht so weit - wie Du ja wohl gemerkt hast :wink:
Ich kaempfe noch damit, ueberhaupt irgendeine Passwortabfrage und entsprechenden Seitenaufruf zustande zu bekommen.

Das dumme ist auch dass ich da garnichts debuggen kann
immer wieder trial-and-error , hochladen, aufpassen, dass der Browser Cache nicht die alte Seite ausgibt
nur um festzustellen, dass es immernoch nicht klappt.

Und die Fehler liegen bisher immer in irgendwelchen bloeden Details (Seite nicht .PHP genant, Tippfehler
)
 das ist schon aetzend


Wenn mal IRGENDWAS funktioniert, dann gehe ich ans EIngemachte.

Gruss

Michael

Hallo,

sorry dass ich erst so spĂ€t mal wieder antworte :smile:. Danke erstmal fĂŒr den Punkt.

In sachen „Debugging“ ist PHP wirklich ein wenig schwierig


Aber es gibt schöne Lösungen um deine Dateien direkt ĂŒber FTP zu bearbeiten.
Ich benutze z. B. ausschließlich Aptana. Super Editor, da kannst du dann direkt deine FTP connections eingeben und kanns direkt auf dem Server arbeiten. So sparst du dir zumindest das Hochladen.

lg

Artur