Frage

Die Arbeit an einem Login-System - der Punkt, wo Kunden ihr Passwort für Website-Zugang wählen.

Darüber hinaus RegEx verwenden, um sicherzustellen, dass das Passwort stark genug ist, in der Regel auf unserem System alle Daten, die in der Datenbank aufzuwickeln werden geprüft, gegen Injektion usw. und ein einigermaßen eingeschränkter Zeichensatz wird auf alle Gebiete durchgesetzt werden. Ich will nicht wirklich einen besonders restriktiven Zeichensatz für das Passwort, da ich denke, es ist ein bisschen ein anti-Muster auf Sicherheit, es zu kontrollieren zu viel.

Jedoch im Fall des Passworts, werde ich es mit einer gesalzenen SHA-512 für Einsatz ohnehin Hashing, die eine Handvoll Fragen aufwirft:

  • Gibt es einen Punkt, was auch immer das Zeichen, bei der Einschränkung festgelegt, dass der Kunde im Kennwort verwenden können - also bin ich außerhalb der Injektion zu irgendwelchen Schwachstellen ausgesetzt, die ich würde ich davon aus durch die Hashing vollständig umgangen werden

  • Es muss Negative zu einem erlauben-all Ansatz sein - ich kann die Tatsache denkt, dass in der Zukunft, was jetzt ein unschuldiges Kombination ist ein gefährlich werden könnte - dass ein echtes Anliegen ist, und es gibt andere, die mir kann übersehen haben?

  • Gibt es irgendwelche Zeichen / Strings, die abgelehnt werden müssen - würden sie durch die native ASP.NET Schutz bekommen sowieso

  • Ein bisschen mehr subjektive vielleicht, aber es ist ein SHA-512 Hash gegeben - gibt es einen Punkt die maximale Länge des Passworts bei der Einschränkung, dass der Benutzer (in vernünftigem Parameter) wählen kann, dass ein Passwort signifikanten unter der Annahme, Größe / Komplexität eine Warnung erhöhen könnte, um zu bestätigen, dass sie es einrichten wollen.

Danke für Ihre Hilfe.

EDIT:. Dies ist eine ASP.NET Web-Anwendung einer MSSQL2008 Datenbank mit ADO.NET Zugriff (nicht LINQ / EF)

War es hilfreich?

Lösung

Es gibt wenig Grund, über SQL-Insertion-Attacken Sorgen machen, wenn Sie tatsächlich sind das Passwort in die Datenbank im Klartext (Gefahr, Will Robertson, Gefahr!) Einsetzen und selbst dann, wenn Sie die Abfrage paramaterize wird es nicht sein, Problem. Sie sollten erlauben [a-zA-Z0-9] sowie einige Reihe von Sonderzeichen. Wahrscheinlich das einzige Zeichen zu beschränken ist ‚<‘, die die ASP.net Validierung Warnung auslösen. Es gibt eine Reihe von Spaß-Tool gibt Kennwortkomplexität zu tun, auf der Client-Seite zu überprüfen. Ich mag diese . Es bietet einige sofortiges Feedback an den Nutzer, wie sie eingeben werden.

Andere Tipps

Von einer nicht-englischen Perspektive - es sollte keine Einschränkungen für das Passwort sein.

Zum Beispiel beschränken, warum ein japanischen Sprache Sprecher des US-ASCII-Zeichensatz zu verwenden? Und warum sollte ein Französisch Sprecher nicht akzentuierte Zeichen verwenden?

Da Ihr Hash beharrt korrekt gibt es keinen technischen Grund, sie zu beschränken.

Da das Passwort gehasht wird, wird es in der Datenbank in Hex Dezimal-Format gespeichert werden. Deshalb sehe ich keinen Sinn, die Art der erlaubten Zeichen zu beschränken. Wenn ich einen chinesischen Buchstaben in meinem Passwort verwenden wollte, soll ich in der Lage sein, dies zu tun. Wenn ich eine Erweiterung für Firefox installiert haben, die zufällige Bytes und verwendet diese für meine Passwörter erzeugt, sollte ich in der Lage sein, dies zu tun. Die Lektion hier ist nicht Ihre Kennwörter des Benutzers zu begrenzen.

Beachten Sie auch, dass RegEx eine Unicode-Unterstützung hat, die erfassen kann, wenn der Benutzer einen Brief aller Sprachen benutzt hat. Das könnte praktisch, wenn Sie die Stärke des Passworts validieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top