Sicheres Passwort ändern Fomular?!?

Homepages, CMS, Templates, Web Based Programming, Webhosting, Gameserver

Moderatoren: coolmann, chillmensch

darkeye
Beiträge: 165
Registriert: 18.06.2008, 09:06
Wohnort: Chemnitz
Kontaktdaten:

Sicheres Passwort ändern Fomular?!?

Beitragvon darkeye » 13.05.2015, 18:22

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!
Bild

Benutzeravatar
Zuujin
Moderator
Beiträge: 1484
Registriert: 28.12.2004, 03:40
Wohnort: Hessen

Re: Sicheres Passwort ändern Fomular?!?

Beitragvon Zuujin » 14.05.2015, 08:18

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
"Weißt Du, das blöde am echten Leben ist, dass es keine Gefahrenmusik gibt." -Cable Guy

Benutzeravatar
Benschzilla
Beiträge: 1391
Registriert: 12.12.2003, 10:45
Wohnort: Forchheim
Kontaktdaten:

Re: Sicheres Passwort ändern Fomular?!?

Beitragvon Benschzilla » 15.05.2015, 07:43

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.
AMD Ryzen 7 3700X auf ASUS Prime B350 Plus
32 GB DDR4 RAM (3200 MHz) Crucial Ballistix Dual Rank
PowerColor Red Devil RX480
1,5TB Speicher + Samsung Evo 860 mir 250GB für OS

Homeserver:
Raspberry Pi 4 mit 4GB RAM + 1TB Datengrab

darkeye
Beiträge: 165
Registriert: 18.06.2008, 09:06
Wohnort: Chemnitz
Kontaktdaten:

Re: Sicheres Passwort ändern Fomular?!?

Beitragvon darkeye » 15.05.2015, 18:57

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??
Bild

Benutzeravatar
Benschzilla
Beiträge: 1391
Registriert: 12.12.2003, 10:45
Wohnort: Forchheim
Kontaktdaten:

Re: Sicheres Passwort ändern Fomular?!?

Beitragvon Benschzilla » 17.05.2015, 07:07

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.
AMD Ryzen 7 3700X auf ASUS Prime B350 Plus
32 GB DDR4 RAM (3200 MHz) Crucial Ballistix Dual Rank
PowerColor Red Devil RX480
1,5TB Speicher + Samsung Evo 860 mir 250GB für OS

Homeserver:
Raspberry Pi 4 mit 4GB RAM + 1TB Datengrab

darkeye
Beiträge: 165
Registriert: 18.06.2008, 09:06
Wohnort: Chemnitz
Kontaktdaten:

Re: Sicheres Passwort ändern Fomular?!?

Beitragvon darkeye » 17.05.2015, 14:17

Hey,
ist schon klar, das man das hiddenfeld auslesen kann. Aber mit hash und salt auf serverseite sollte das eigentlich soweit passen, oder?
Bild

Benutzeravatar
Benschzilla
Beiträge: 1391
Registriert: 12.12.2003, 10:45
Wohnort: Forchheim
Kontaktdaten:

Re: Sicheres Passwort ändern Fomular?!?

Beitragvon Benschzilla » 19.05.2015, 06:48

Es ist halt in sofern sicher, dass niemand das Klartext PW auf dem Server auslesen kann.
AMD Ryzen 7 3700X auf ASUS Prime B350 Plus
32 GB DDR4 RAM (3200 MHz) Crucial Ballistix Dual Rank
PowerColor Red Devil RX480
1,5TB Speicher + Samsung Evo 860 mir 250GB für OS

Homeserver:
Raspberry Pi 4 mit 4GB RAM + 1TB Datengrab


Zurück zu „Webseiten, Webprogrammierung & Domains“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste