1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Deutsch
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Passwort ändern-Skript

  • tronax
  • 9. April 2007 um 13:24
  • Unerledigt
  • tronax
    2
    tronax
    Mitglied
    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
    1
    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
    2
    tronax
    Mitglied
    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
    7
    JohannesBuchner
    Mitglied
    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...

    It's like the square root of one million ... no one will ever know.

  • Maximilian Rupp 27. Dezember 2024 um 12:05

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Benutzer online in diesem Thema

  • 1 Besucher

Rechtliches

Impressum

Datenschutzerklärung

  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  • Deutsch
  • English
Zitat speichern