1. Weiterleitung zu NetzLiving.de
  2. Forum
    1. Unerledigte Themen
  3. zum neuen Forum
  • Anmelden
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Passwort ändern-Skript

  • tronax
  • 9. April 2007 um 13:24
  • Unerledigt
Hallo zusammen,

das Informatik-Forum geht in den Archivmodus, genaue Informationen kann man der entsprechenden Ankündigung entnehmen. Als Dankeschön für die Treue bekommt man von uns einen Gutscheincode (informatikforum30) womit man bei netzliving.de 30% auf das erste Jahr sparen kann. (Genaue Infos sind ebenfalls in der Ankündigung)

Vielen Dank für die Treue und das Verständnis!
  • tronax
    Punkte
    35
    Beiträge
    4
    • 9. April 2007 um 13:24
    • #1

    Hallo könnte mal bitte jemand drüber schauen, und mir sagen, warum das neue Passwort nicht in die Datenbank geschrieben wird?



    PHP-CODE:

    <?php
    session_start();
    include("config.inc.php");
    include("header.php");

    if($_POST['newpass']==$_POST['newpass2']&& $_POST['newpass']>5 && $_POST['newpass2']>5) {
    $db->query("UPDATE k_user SET passwort='".$newpass."' WHERE u_id='".$_SESSION['u_id']."'");
    echo 'Passwort wurde erfolgreich geändert!';

    }
    else{
    print "<div id='fehler'><img src=\"Bilder/error.png\"> Das Passwort muss min. 5 Zeichen lang sein!</div>";
    ?>
    <center>
    <table>
    <tr><td><form method="post" action="changePass2.php"><br> </td></tr>
    <tr><td><label>Altes Passwort: </label><td><input name="oldpass" type="password" id="oldpass"><br></td></td></tr>
    <tr><td><label>Neues Passwort: </label><td><input name="newpass" type="password" id="newpass"><br></td></td></tr>
    <tr><td><label>Neues Passwort (wiederholen): </label><td><input name="newpass2" type="password" id="newpass2"></td></td></tr>
    <tr><td><input name="passaendern" type="submit" id="passaendern" value="Passwort ändern"></td></tr>
    </table>
    </center>
    <?
    include("footer.php");

    }

    ?>


    In der Datenbank wird das Passwort einfach gelöscht(leer), anstatt das neue Passwort zu aktualisieren.


    Vielen Dank für eure Hilfe.

  • Paulchen
    Gast
    • 9. April 2007 um 13:46
    • #2
    PHP
    $db->query("UPDATE k_user SET passwort='".$newpass."' WHERE u_id='".$_SESSION['u_id']."'");


    Ähm, gehört da nicht

    PHP
    $db->query("UPDATE k_user SET passwort='".$_POST['newpass']."' WHERE u_id='".$_SESSION['u_id']."'");


    So, und jetzt zu ein paar Dingen, die mir da aufgefallen sind:

    Zitat von tronax

    if($_POST['newpass']==$_POST['newpass2']&& $_POST['newpass']>5 && $_POST['newpass2']>5) {

    Wenn die zwei Passwörter gleich sind (und nur dann besteht die Möglichkeit, dass $_POST['newpass2']>5 ausgewertet wird), ist $_POST['newpass2'] genau dann länger als fünf Zeichen, wenn $_POST['newpass'] länger als fünf Zeichen lang ist, d.h. die Überprüfung, ob das $_POST['newpass2'] länger als fünf Zeichen ist, kannst du streichen.

    Zitat von tronax

    $db->query("UPDATE k_user SET passwort='".$newpass."' WHERE u_id='".$_SESSION['u_id']."'");

    Böse.

    Warum?

    • Ich setze mal mein Passwort auf "abc';". Dann haben ab sofort alle Benutzer das Passwort "abc"? Kann ich mich dann als beliebiger User mit diesem Passwort anmelden und beliebigen Unfug anstellen?
    • Ich setze mal das Passwort auf "abc'; DROP TABLE k_user;". Ist dann die Tabelle k_user weg?
    • Passwörter im Klartext in Datenbanken zu speichern ist böse.

    Zu den ersten beiden Punkten: mysql_real_escape_string verwenden.

    Zum dritten Punkt: Hashwert (z.B. mit md5 ermittelt) abspeichern. Zur Überprüfung, ob das korrekte Passwort eingegeben wurde, ist die Hashfunktion auf die Eingabe anzuwenden. Dann sind die beiden Hashwerte miteinander zu vergleichen.

  • tronax
    Punkte
    35
    Beiträge
    4
    • 9. April 2007 um 13:59
    • #3

    Danke für die Hinweise..jetzt funktioniert es...Das mit dem Hash5 baue ich später ein

  • JohannesBuchner
    Punkte
    455
    Beiträge
    90
    • 9. April 2007 um 16:51
    • #4

    Noch besser ist, vor Absenden des Formulars schon md5-hashes (am besten salted, im Stil von CHAP) zu bilden.
    Ich hab das schon mal implementiert ... werd mal eine einfach einzubindende Library schreiben...

  • Maximilian Rupp 27. Dezember 2024 um 12:05

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

  1. Datenschutzerklärung
  2. Impressum