2016-08-08 28 views
0

Ich versuche meine erste Login-Seite als Lernübung zu erstellen.Einfacher Benutzername und Passwort Validierung Java

Mein Plan war es, das Passwort mit einem Salz des Benutzernamens vor Hash zu hacken. Speichern Sie das in einer Textdatei, und wenn der Benutzer sich anmeldet, würde ich das Passwort mit dem gleichen Salz hashen und die Ergebnisse mit der Textdatei vergleichen.

Ich bin ein kompletter Anfänger mit Sicherheit etc, also weiß ich nicht, ob das sicher wäre oder nicht? Was ist die Norm für kleine Anwendungen? Wenn diese Methode nicht empfohlen wird, was ist eine geeignete einfache Alternative?

EDIT Eine mögliche Lösung, wenn ich es zur Arbeit bringen kann.

String unpwfield; 
    unpwfield = userId.getText()+passwordfield.getText(); 
    if (BCrypt.checkpw(unpwfield, passwordhash)) 
     System.out.println("It matches"); 
    else 
     System.out.println(userId.getText()+passwordfield.getText()); 
+0

Das klingt gut für mich und ist eine Norm für viele Anwendungen. Seien Sie sicher, dass Sie einen sicheren Hashalgorithmus verwenden. In der Regel würde diese Information in eine Datenbank geschrieben werden. –

+0

Ich wollte, dass Benutzer hier eine Datei http://aes.online-domain-tools.com/ erstellen und sie bitten, den Schlüssel als Benutzernamen zu verwenden. Ist das ein Sicherheitsfehler, wenn man weiß, dass der Schlüssel der Benutzername ist? –

+0

@ user1274820 Siehe das Tag-Wiki für [Tag: Passwort-Verschlüsselung] und [diese Antwort] (http://stackoverflow.com/questions/2283937/how-should-i-ethic-approach-user-password-storage-for -ter-plaintext-retrie/2287672 # 2287672) warum das eine schreckliche Idee ist. – EJP

Antwort

1

Für Passwort-Speicher, Sie gehen einen langsam Hashing-Algorithmus verwenden wollen. Kryptografische Hashes sind zu schnell und verlangsamen den Angreifer beim Offline-Passwort-Erraten nicht. Zum Beispiel ist bcrypt oft der am besten geeignete Algorithmus zu verwenden.

Bcrypt erzeugt seine eigenen Salze, so dass Sie sich keine Sorgen über einen sicheren Weg machen müssen, diese zu generieren.

Ich würde vermeiden, Benutzernamen als das Salz zu verwenden. Ein Salt ist, um zu vermeiden, dass das gleiche Passwort jemals mit der gleichen Byte-Repräsentation gespeichert wird, wenn es mehrmals verwendet wird.

Die Gründe sind, wenn der Benutzer das gleiche Passwort wiederverwendet, dann ist es für jeden Angreifer sofort sichtbar mit den Passwort-Hash-Daten. Wenn Ihr System öffentlich verfügbar ist, werden die Hashes für den Benutzer in jeder Instanz der Anwendung genauso gespeichert. Dies bedeutet, dass Angreifer Rainbow-Tabellen mit admin als Salz vorkonfigu- rieren können.

Weitere Informationen und Anleitungen finden Sie unter OWASP Cheat Sheet on Password Storage.

+0

Ich habe angefangen, auf Bcrypt zu schauen und ich wollte sowohl den Benutzernamen als auch das Passwort zusammen geben, um mit dem zufälligen Salz kombiniert zu werden. Weißt du, ob das möglich ist? Ich bekomme einen Nullzeiger, wenn ich es versuche. Siehe Edit .. –

+0

Bcrypt generiert sein eigenes Salz, Sie müssen nicht selbst bestehen und es wäre kein Vorteil, dies zu tun. – SilverlightFox

+0

Ich weiß nicht, wie man mit dem Überprüfen des Benutzernamens und des Passworts umgeht, also bin ich der Meinung, dass ich sie beide zusammen kombinieren könnte, bevor ich den Hash erstelle. Dann, wenn ich sie vergleichen möchte, füge ich einfach beide Zeichenfolgen zusammen und vergleiche. –

Verwandte Themen