Problemchild Geschrieben 20. März 2003 Geschrieben 20. März 2003 Hi, Ich würde gerne auf einer Hompage einen Passwortgeschützten berreich einfügen der durch PHP realisiert werden soll. Das lässt sich relativ leicht mit einer if/else Abfrage realisieren, aber das is nicht sehr Sicher, gibt es da noch was besseres auf PHP basis? Zitieren
arrayhunter Geschrieben 20. März 2003 Geschrieben 20. März 2003 hallo, ich würde einen Passwortschutz mit einer Verbindung zu MySql bewältigen. lass die Leute registrieren und sich einen Nick aussuchen, der in die DB eingetragen wird. gleichzeitig lasse mit md5 ein Passwort generieren und es auch in die DB eintragen danach kann sich der User einloggen ... ob der User authentifiziert ist, fragst du dann per PHP ab Zitieren
progmaker Geschrieben 20. März 2003 Geschrieben 20. März 2003 Willst du dafür eine Datenbank benutzen oder soll das Passwort in einer Textdatei stehen? Zitieren
Problemchild Geschrieben 20. März 2003 Autor Geschrieben 20. März 2003 Was ist md5? Mit mysql wärs wohl am besten. Aber wie frage Ich dann das PW ab aus der DB mit PHP? Das PW soll allerdings eigentlich nur für den Admin sein damit er die vorher schon registrierten Daten in der DB editieren kann. Zitieren
progmaker Geschrieben 20. März 2003 Geschrieben 20. März 2003 md5 ist ein Verschlüsselungsalgorithmus, der sowohl in PHP als auch in mySQL vorhanden ist. Dann steht das Passwort nicht als Klartext in der DB. Du erstellst dynamisch eine mySQL-Abfrage und quckst, ob der User schon in der DB vorhanden ist und ob das Passwort dazu passt. Zitieren
arrayhunter Geschrieben 20. März 2003 Geschrieben 20. März 2003 md5 ist eine sehr sichere Art der HashBildung, Dh. Umkehrung unmöglich, aber ein Vergleichen der Hashwerte ist möglich. zb: du hast ein formular mit zwei feldern form_username und form_passwort PHP: if($submit){ $form_passwort = md5($form_passwort) $db->query("select * FROM tabelle WHERE username='$form_username' AND passwort=''$form_passwort'") } zum testen vorher ein user mit: $password = md5("test"); $db->query("INSERT INTO tabelle (passwort, username) VALUES ('$password', 'admin')") anlegen. [/php] P.S. Wer Platz in der Db sparen möchte, der MD5-Hash ist immer 32 Zeichen lang, egal, wie lang das Passwort ist ! Zitieren
BigB Geschrieben 20. März 2003 Geschrieben 20. März 2003 Muss es denn unbeding PHP sein. Wie wäre es denn mit htaccess?? Soweit ich weiß die sicherste Methode. Zitieren
arrayhunter Geschrieben 20. März 2003 Geschrieben 20. März 2003 naja, HTACcess geht auch , aber schöner als das Browser-Auth-Window ist doch ein Loginformular Zitieren
BigB Geschrieben 20. März 2003 Geschrieben 20. März 2003 Kann man nicht über Login-Formular die Daten an das Browser-Auth-Window übergeben, so dass der User da nichts mehr eingeben muss? Die Frage hab ich mir noch nie gestellt. Das wird doch irgendwie möglich sein, oder? Zitieren
arrayhunter Geschrieben 20. März 2003 Geschrieben 20. März 2003 1.Variante http://username:passwort@www.domainxy.de/geschuetztes_verzeichnis/seite.html 2. du müsstest ZUgriff auf die HTaccess-dateien haben, und dann auslesen zuweisen usw - finde ich persönlich zu umständlich wozu gibt es Sessions ?? Zitieren
BigB Geschrieben 20. März 2003 Geschrieben 20. März 2003 Richtig. Mehr als nur eine Alternative. Wobei es mal interessant ist zu wissen (jetzt auf htaccess bezogen). Zitieren
arrayhunter Geschrieben 20. März 2003 Geschrieben 20. März 2003 die Server-vars abfragen wüsste ich noch, //Benutzername $_SERVER['PHP_AUTH_USER'] == $_SERVER['REMOTE_USER'] //Passwort im Klartext $_SERVER['PHP_AUTH_PW'] aber umgedreht auch net : die htaccess-datei ist doch ein sehr guter Schutz ich denke, dass es so nicht funktioniert, mit php und htaccess Zitieren
Spike Geschrieben 20. März 2003 Geschrieben 20. März 2003 Warum sollte php nicht darauf zugreifen können? Das sind ganz normale Dateien die man editieren kann, vor allem als Serverseitige Scriptsprache hat man doch die Macht dazu. Man kann sie ja auch mit php dynamisch am Server erstellen. Ist doch eine ganz einfache Sache, smart macht man es mit Web-Login und Speicherung in einer Datenbank (oder Textdatei in einem geschützten Bereich), einfach macht man es mit htaccess. Zitieren
Problemchild Geschrieben 20. März 2003 Autor Geschrieben 20. März 2003 Also, Ich das jetzt mal versucht umzusetzten hat aber nich hingehauen. Mein HTML Quellcode is folgender: <html> <head> <title>Login</title> <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"> <link rel="stylesheet" type="text/css" href="../css/neu.css"> </head> <body bgcolor="blue"> <h1>Bitte geben Sie Passwort und Username ein.</h1> <form action="login.php" method="post"> Passwort: <input type="text" name="pw"><br> <br> Username: <input type="text" name="user"><br> <br> <input type="submit" value="Einloggen"> </form> </body> </html> und mein PHP code is: <?php if ($submit) { $pw=md5($pw); $db="select * from passwort where user='$user' and pw='$pw'"; } else {echo "Leider nicht möglich"}; ?> Was mache Ich falsch? Is vieleicht ne blöde frage, aber Ich komm nich drauf woran es liegt:( Zitieren
Spike Geschrieben 20. März 2003 Geschrieben 20. März 2003 Hast du das PW denn auch in der Datenbank als MD5 eingetragen? Was gibt er für eine Fehlermeldung bei der Ausführung des Scripts? Zitieren
BigB Geschrieben 20. März 2003 Geschrieben 20. März 2003 Mmmhh. Wie ist das denn wenn man dem Submit-Button keinen Namen gibt? Kann man dann nach der Variablen $submit fragen? Ich denke eher nicht. Das ist das, was mir zuerst auffällt. Desweiteren weist du der Variablen $db ja nur den String zu und machst nichts weiteres damit.... Zitieren
arrayhunter Geschrieben 20. März 2003 Geschrieben 20. März 2003 der von mir gepostete Code ist nur eine Art Schablone, die man einsetzen kann. für den Datenbankzugriff ( Öffnen usw.) bist du natürlich selbst verantwortlich warum es bei dir nicht läuft , kann mehrere Gründe haben: 1. wie sieht es mit deinen register_globals aus ? 2. steht die Verbindung zur DB ? Zitieren
Problemchild Geschrieben 20. März 2003 Autor Geschrieben 20. März 2003 Wie trage Ich das in die DB als md5 ein? Die Fehlermeldung ist das er mir ne Weiße Seite anzeigt, ohne irgendwas... Ziel des ganzen ist es auch nach Erfolgreichem einloggen die Datenbank auf der HTMl Seite Anzeigen zu lassen und zu editieren usw, geht so was überhaupt? Zitieren
arrayhunter Geschrieben 20. März 2003 Geschrieben 20. März 2003 Originally posted by Problemchild Wie trage Ich das in die DB als md5 ein? $password = md5("test"); $db->query("INSERT INTO tabelle (passwort, username) VALUES ('$password', 'admin')") [/php] -du musst das pw per md5 umwandeln - das feld in der db ist ein string-typ - dort trägst du das umgewandelte pw per php ein ( siehe oben) Zitieren
Problemchild Geschrieben 20. März 2003 Autor Geschrieben 20. März 2003 Meine Dozentin meinte grad Ich könnte das auch ohne md5 machen, Hauptsache es wird das PW überprüft und der Username und wenn das richtig ist soll die Tabelle in der html Seite angezeigt werden und editier bar sein. Wie überprüfe Ich das PW? Wie zeige Ich den Inhalt der Tabelle an nach erfolgreichem Login? Zitieren
jake84 Geschrieben 20. März 2003 Geschrieben 20. März 2003 hi :-) gibt es auch eine möglichkeit mit md5 wieder was zurück verschlüsseln? z.B. aus "test" wird "098f6bcd4621d373cade4e832627b4f6" jetzt möchte ich aus "098f6bcd4621d373cade4e832627b4f6" wieder test haben :-) mfg Jake Zitieren
arrayhunter Geschrieben 20. März 2003 Geschrieben 20. März 2003 Originally posted by jake84 hi :-) gibt es auch eine möglichkeit mit md5 wieder was zurück verschlüsseln? wie oben schon geschrieben, geht das Entschlüsseln mit md5 nicht !!! du kannst nur 2 md5-Hashes vergleichen Zitieren
Jaraz Geschrieben 20. März 2003 Geschrieben 20. März 2003 Originally posted by jake84 gibt es auch eine möglichkeit mit md5 wieder was zurück verschlüsseln? Nein, sowas wird auch nicht benötigt. Für dich und die "Dozentin". 12.9. Wie kann ich Passwörter sicher speichern? http://www.dclp-faq.de/q/q-safe-password.html Gruß Jaraz Zitieren
jake84 Geschrieben 20. März 2003 Geschrieben 20. März 2003 danke @blast und @Jaraz :-) hab gerade was gefunden :-) $test = "test"; // zum Verschlüsseln $test = base64_encode($test); aus test wird: dGVzdA== // zum entschlüsseln $test = base64_decode($test); aus dGVzdA== wird: test :-) mfg Jake Zitieren
Jaraz Geschrieben 20. März 2003 Geschrieben 20. März 2003 Hallo! Erstens ist das keine Verschlüsselung! Der String wird einfach nur anders codiert. Eine Verschlüsselung/Entschlüsselung setzt immer vorraus, dass du irgendwo einen Key hast, mit dem du etwas verschlüsselst. Eine einseitige Verschlüsselung dagegen benötigt keinen Key, da man sie nicht Rückgängig machen kann und somit nur mit "Brute Force" angriffen knacken kann. Wenn du mit base64_encode arbeitest, kannst du die Passwörter auch gleich im Klartext speichern. Zweitens was willst du denn überhaupt machen? Gruß Jaraz Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.