wake-up-neo.net

Klartext-Passwort über HTTPS

Ich arbeite derzeit an einem PHP OpenID-Provider, der über HTTPS funktioniert (daher SSL-verschlüsselt).
Ist es falsch für mich, das Passwort als Klartext zu übermitteln? HTTPS kann theoretisch nicht abgefangen werden, daher sehe ich nichts falsches. Oder ist das auf einer bestimmten Ebene unsicher und ich sehe das nicht?

80
WhyNotHugo

Es ist sicher. So funktioniert das gesamte Web. Alle Passwörter in Formularen werden immer im Klartext gesendet. Es liegt also an HTTPS, diese zu sichern.

110
Eduardo Scoz

Sie müssen weiterhin sicherstellen, dass Sie es über POST request, not GET) senden. Wenn Sie es über GET request senden, kann es im Klartext in den Browserverlaufsprotokollen des Benutzers oder in den Zugriffsprotokollen des Webservers gespeichert werden .

66
Andrew Medico

Wenn HTTP deaktiviert ist und Sie nur HTTPS verwenden, übertragen Sie das Kennwort ohnehin nicht wirklich als Klartext.

20
Can Berk Güder

Hash-Client-Seite. Warum? Lassen Sie sich von einem kleinen Experiment erzählen. Gehen Sie zum Computer in der Cafeteria. Öffnen Sie den Browser zur Anmeldeseite der Unternehmenswebsite (https). Drücken Sie F12, klicken Sie auf die Registerkarte "Netzwerk", deaktivieren Sie "Protokoll beibehalten", minimieren Sie die Konsole, lassen Sie die Webseite jedoch geöffnet, um sich anzumelden. Setzen Sie sich und essen Sie zu Mittag. Beobachten Sie, wie sich ein Mitarbeiter auf der Unternehmenswebsite anmeldet und wie sich ein guter kleiner Mitarbeiter abmeldet, wenn er fertig ist. Beenden Sie das Mittagessen, setzen Sie sich an den Computer und rufen Sie die Registerkarte "Netzwerk" auf. Jeder einzelne Benutzername und jedes Kennwort werden in Klartext im Formular angezeigt.

Keine Spezialwerkzeuge, keine Spezialkenntnisse, keine ausgefallenen Hacking-Hardware, keine Keylogger, nur der gute alte F12.

Aber hey, denk weiter, alles was du brauchst ist SSL. Die Bösen werden dich dafür lieben.

11
CodeDog

Die anderen Plakate sind korrekt. Nachdem Sie jetzt SSL zum Verschlüsseln des Übertragung des Kennworts verwenden, stellen Sie sicher, dass Sie es mit einem guten Algorithmus und Salt hacken, damit es geschützt ist, wenn es in Ruhe ist. auch...

5
grossvogel

Machen wir uns Notizen zu früheren Antworten.

Erstens ist es wahrscheinlich nicht die beste Idee, Hash-Algorithmen clientseitig zu verwenden. Wenn Ihr Kennwort auf der Serverseite gesalzen ist, können Sie keine Hashes vergleichen (zumindest nicht, wenn Sie den Client - Hash nicht in einer der Hash - Ebenen des Kennworts in der Datenbank speichern, die identisch oder identisch ist) schlechter). Und Sie möchten den von der Datenbank auf der Clientseite verwendeten Hashing-Algorithmus nicht implementieren, da dies dumm wäre.

Zweitens ist der Handel mit kryptografischen Schlüsseln auch nicht ideal. Theoretisch könnte der MITM (vorausgesetzt, er hat ein Root-Zertifikat auf dem Client installiert) die kryptografischen Schlüssel ändern und diese mit seinen eigenen Schlüsseln ändern:

Ursprüngliche Verbindung (ohne Berücksichtigung von tls) von einem theoretischen Server, der Schlüssel austauscht:

Öffentliche Schlüssel anfordern> Server enthält die privaten Schlüssel, öffentliche Schlüssel an Client generieren> Server sendet öffentliche Schlüssel an Client

Nun, in einem theoretischen MITM-Atrack:

Öffentliche Schlüssel für Client-Anforderung> MITM generiert gefälschte private Schlüssel > Server speichert die privaten Schlüssel, generiert öffentliche Schlüssel für Client> MITM empfängt die öffentlichen Schlüssel vom ursprünglichen Server. Jetzt können wir unsere gefälschten öffentlichen Schlüssel an den Client senden. Wenn eine Anfrage vom Client eingeht, werden die Clientdaten mit den gefälschten Schlüsseln entschlüsselt und die Nutzdaten geändert. oder lesen Sie es) und verschlüsseln Sie es mit den ursprünglichen öffentlichen Schlüsseln .> MITM sendet gefälschte öffentliche Schlüssel an den Client.

Dies ist der Punkt, an dem Sie ein vertrauenswürdiges CA-Zertifikat in TLS haben. Auf diese Weise erhalten Sie eine Nachricht von der Browser-Warnung, wenn das Zertifikat nicht gültig ist.

Antwort auf das OP: Meiner bescheidenen Meinung nach können Sie das nicht tun, da früher oder später jemand einen Benutzer aus Ihrem Dienst angreifen und versuchen wird, Ihr Protokoll zu brechen.

Sie können jedoch 2FA implementieren, um zu verhindern, dass Benutzer jemals versuchen, sich mit demselben Kennwort anzumelden. Aber Vorsicht vor Wiederholungsangriffen.

Ich kann Kryptografie nicht besonders gut. Korrigieren Sie mich, wenn ich falsch liege.

2
Lucca Ferri