Seite 1 von 1

Sicheres Passwort ändern Fomular?!?

Verfasst: 13.05.2015, 18:22
von darkeye
Hallo zusammen,
ist folgender Code sicher?

passwort.html

Code: Alles auswählen

<form action="function.change-password.php" method="post"
              name="passwordchange_form" class="form-horizontal"
              role="form" ID="passwordchange_form" >
            <input type="hidden" name="userId" value="{$User.UserID}">
 
                <div class="form-group">
                    <label for="current_password" class="col-sm-3 control-label">aktuelles Passwort</label>
                    <div class="col-sm-3">
                        <input type="password" class="form-control" placeholder="aktuelles Passwort"
                               name="current_password" id="current_password">
                    </div>
                </div>
                <div class="form-group">
                    <label for="new_password" class="col-sm-3 control-label">neues Passwort</label>
                    <div class="col-sm-3">
                        <input type="password" class="form-control" placeholder="neues Passwort"
                               name="new_password" id="new_password">
                    </div>
                </div>
                <div class="form-group">
                    <label for="confirmed_password" class="col-sm-3 control-label">neues Passwort wiederholen</label>
                    <div class="col-sm-3">
                        <input type="password" class="form-control" placeholder="Passwort wiederholen"
                               name="confirmed_password" id="confirmed_password" onkeydown=" if (event.keyCode === 13)
                                           document.getElementById('submitbtn').click();">
                    </div>
                </div>
                <button class="btn btn-default" type="submit" id="submitbtn" style="margin-bottom: 15px;"
                        value="change-pwd" onclick="return changeformhash(this.form,
                                        this.form.userID,
                                        this.form.current_password,
                                        this.form.new_password,
                                        this.form.confirmed_password);">Dein Passwort jetzt ändern</button>

        </form>


Das neue passwort wird kurz auf inhalt geprüft und dann via

Code: Alles auswählen

   // Erstelle ein neues Feld für das gehashte Passwort.
    var np = document.createElement("input");
    var cp = document.createElement("input");
 // Füge es dem Formular hinzu.
    form.appendChild(cp);
    cp.name = "cp";
    cp.type = "hidden";
    cp.value = hex_sha512(current_password.value);
 
    // Füge es dem Formular hinzu.
    form.appendChild(np);
    np.name = "np";
    np.type = "hidden";
    np.value = hex_sha512(new_password.value);
 
    // Sorge dafür, dass kein Text-Passwort geschickt wird.
    current_password.value = "";
    new_password.value = "";
    confirmed_password.value = "";
 
    // Reiche das Formular ein.
    form.submit();
    return true;


gehashed, und gesaltet und als hidden feld per POST übergeben.

mit geht es vor allem um die übergabe als hidden feld. Ist das sicher? kennt ihr eine sichere Methode??

Danke und viele Grüße!

Re: Sicheres Passwort ändern Fomular?!?

Verfasst: 14.05.2015, 08:18
von Zuujin
Moin,
wenn ich das richtig sehe ist das Javascript? D.h. der Code wird auf Client-Seite ausgeführt. Jeder kann sich den Code ansehen und weiß dann z.B. welches Hash-Verfahren du benutzt und vorallem: Wie der Salt lautet. A propos: Ich sehe dich hashen, aber nirgendwo salten.

"Sicher" ist der ganze Spaß sowieso nur, wenn du eine https-Verbindung aufgebaut hast. Sonst wird alles was du per POST an den Server schickst (dazu zählen auch die HIDDEN-Einträge) für jeden der dazwischenhängt einsehbar.

Im Normalfall baut man eine https-Verbindung auf, schickt das PW per POST rüber und verarbeitet es dann serverseitig (z.B. mit php), generiert also Salt und verhasht beides. Ich persönlich sehe keinen Sinn schon vor dem Transfer irgendwas zu tun, denn wer auch immer sich zwischen Client und Server hängt um mitzulesen, der guckt sich dann auch den clientseitigen Javascriptcode an und sieht genau was du gemacht hast. Wobei ich beim Überlegen gerade zugeben muss: Vorm Übertragen schonmal hashen wäre gar nicht so schlecht. Trotzdem darf nur auf dem Server gesalzen werden, sonst ist der ganze Sinn und zweck des Salt hinüber.

Gruß,
Zuujin

Re: Sicheres Passwort ändern Fomular?!?

Verfasst: 15.05.2015, 07:43
von Benschzilla
Das Problem hierbei ist, wenn es einen Man-In-The-Middle Angriff gibt, dann spielt es keine Rolle, ob er den Hash oder das Klartext PW abfängt. Er kann sich dann mit dem Hash auch gegenüber dem Server authentifizieren, da der Server ja entweder den Hash oder das PW entgegen nimmt.

Wie bereits gesagt, sind die Hidden Einträge auch lesbar und somit bringt das ganze nicht viel. Der einzige Vorteil ist, dass ein Angreifer das Klartext PW nicht kennt (viele Nutzer verwenden häufig immer die gleichen PW). Also wenn die Übertragung sicher sein soll, dann brauchst du zur Übertragung TLS, bei einer HTTPS Verbindung.

Re: Sicheres Passwort ändern Fomular?!?

Verfasst: 15.05.2015, 18:57
von darkeye
Also abgesehen von SSL wird das Passwort per js gesalten, als hiddenfeld an ein php script übermittelt, dort der salt um einen Hash ergänzt gesaltet und dann in die DB geschrieben..

reicht das??

Re: Sicheres Passwort ändern Fomular?!?

Verfasst: 17.05.2015, 07:07
von Benschzilla
Nein. Das Hiddenfield kann so oder so gelesen werden, das stellt keinen Sicherheitsaspekt dar. Einem Angreifer ist es dann auch relativ egal, ob er ein PW oder den Hash abfängt, er kann sich mit beidem gegenüber dem Server (in deinem Fall dem PHP Script) authentifizieren und erhält Zugriff. Mit dem gehahsten PW kann er es halt nur nicht im Klartext lesen.

Re: Sicheres Passwort ändern Fomular?!?

Verfasst: 17.05.2015, 14:17
von darkeye
Hey,
ist schon klar, das man das hiddenfeld auslesen kann. Aber mit hash und salt auf serverseite sollte das eigentlich soweit passen, oder?

Re: Sicheres Passwort ändern Fomular?!?

Verfasst: 19.05.2015, 06:48
von Benschzilla
Es ist halt in sofern sicher, dass niemand das Klartext PW auf dem Server auslesen kann.