2010-07-03 8 views
7

Gibt es etwas besonderes an Zeichen, die in einem Passwort erlaubt/nicht erlaubt sein sollten?Zeichen in einem Passwort nicht zulassen?

Ich speichere das Passwort im db hashed/gesalzen und verwende PDO, um eine Injektion zu verhindern. Mache ich genug? Kürzlich stieß ich auf ein System, das eine Reihe von Zeichen nicht erlaubt, erinnere mich nicht an alle von ihnen, aber eins war das Ampersand &. Haben sie das für Anti-Datenbank-Injektionen getan oder gibt es noch etwas, das mir fehlt? Sollen Passwort-Zeichen auf bestimmte Zeichen beschränkt sein oder nicht?

+2

Ich erinnere mich nicht an irgendein Zeichen, das ein Problem ist, wenn Sie Platzhalter verwenden, aber ich könnte falsch sein, da ich den ganzen Förster noch andere Sprachen nicht kenne ... aber vielleicht, wenn Sie UTF-8 und den Platzhalter verwenden, sollte es sein genug, um alles zu akzeptieren. – Prix

Antwort

9

Es gibt keinen technischen Grund, irgendwelche Zeichen in einem Passwort zu verbieten. Ich schätze, in dem Fall, dass Sie beschreiben, würden sie nur alphanumerische Zeichen zulassen, um Probleme auf der Benutzerseite zu vermeiden (zB durch Eingabe eines Zeichens, das auf Tastaturen in einem anderen Land nicht verfügbar ist).

Viele Anbieter und Sites zwingen Benutzer, sehr komplexe Passwörter zu wählen, die eine minimale Anzahl von Nummern und manchmal sogar Sonderzeichen enthalten, um Brute-Forcing oder dictionary attacks zu verhindern.

Ich glaube nicht, zwang Menschen, ein komplexes Passwort zu wählen, ist weise. Kennwörter, an die Sie sich nicht erinnern können, werden Sie irgendwo aufschreiben, was im wirklichen Leben oft ein viel größeres Sicherheitsrisiko schafft.

Ein einfaches Ratenlimit im Anmeldesystem (z. B. den Zugriff für 15 Minuten nach 3 fehlgeschlagenen Anmeldeversuchen verweigern) nimmt der Bedrohung durch Brute-Forcing viel eleganter den Weg.

Man muss nicht 100% damit einverstanden sein, aber ich fand dieses provokante Papier zum Thema von Microsoft Research sehr interessant. So Long, And No Thanks for the Externalities: The Rational Rejection of Security Advice by Users

Aus dem Abstract:

Es wird oft behauptet, dass die Nutzer hoffnungslos sind faul und unmotiviert auf Sicherheitsfragen. Sie wählen schwache Passwörter, ignorieren Sicherheitswarnungen und sind zu Zertifikatsfehlern blind. Wir argumentieren, dass die Ablehnung der Benutzer des Sicherheitshinweises, den sie erhalten, aus wirtschaftlicher Sicht völlig rational ist. Die Beratung bietet vor den direkten Kosten von Angriffen abzuschirmen, belastet sie jedoch mit weitaus größeren indirekten Kosten in Form von Aufwand.

+3

+1 für nicht erzwingen. =) –

+5

+1 für keine Einschränkungen. Ich misstraue Websites, die das Bedürfnis verspüren, mein Passwort zu beschränken - es lässt mich fragen, warum sie das Bedürfnis haben, es einzuschränken und wie es es speichert. – Mike

+4

Das Schreiben Ihres komplexen Passworts ist nicht so sehr ein Sicherheitsrisiko, als wenn Sie Ihr schwaches oder einfach zu erratendes Passwort nicht aufschreiben. Die meisten Angriffe werden remote ausgeführt. Wenn Personen Zugang zu Ihrem Schreibtisch haben, auf dem sich Ihr aufgeschriebenes Passwort befindet, haben diese wahrscheinlich auch physischen Zugriff auf Ihren Computer mit Cookies, mit denen Sie eingeloggt bleiben. Das ist nur, wenn Sie Ihre Festplatte verschlüsseln, aber ich kenne keine -Geek das tut das. Ich glaube nicht, ein Lockout-System ist eine gute Idee. Es wird zu einfach, ein DoS gegen Ihre Benutzer zu machen. Alles, was ich tun muss, ist ein paar fehlgeschlagene Versuche in Ihrem Konto, um Sie auszuschließen. –

2

Warum möchten Sie Zeichen in einem Passwort einschränken? Du solltest sowieso irgendeine Art von Hashing machen. Meine Passwörter enthalten häufig spezielle Symbole, einschließlich solcher, die nicht auf der Tastatur enthalten sind.

Wenn Sie Einschränkungen möchten, sollten sie nur erfordern, dass sie komplexer sind, nicht weniger.

+2

"spezielle Symbole einschließlich solche, die nicht auf der Tastatur enthalten sind", wie was? –

+1

auf dem meisten der Tastatur, diese Buchstaben erscheinen nicht: æøå –

+1

@Alix Axel: Random Unicode-Zeichen oder Dinge mit chr (c)> 127. Mein Passwort ist lang und zufällig generiert. Sie werden in einer verschlüsselten Datenbank auf meinem Computer gespeichert (speziell KeePassX). –

2

Das einzige, was ich verbieten/strip in Passwörter ist Whitespace, gibt es keinen Grund, etwas anderes zu verbieten.

+3

Mm, ich würde sagen, das hängt von der Zielgruppe des Dienstes ab, den Sie anbieten. Wenn sie Reisende sind, würde ich vorsichtig sein. Angenommen, Sie sind im Urlaub in einem Land, in dem Ihre lokalen Umlaute (in meinem Fall "äöüß") nicht auf der Tastatur verfügbar sind. Die meisten Leute kennen die Alt + xyz-Codes nicht, um sie zu bekommen. Es ist nicht deine Schuld, dass sie in diesem Fall das falsche Passwort gewählt haben, aber es kann allen gut tun, das zu verhindern. –

+3

In Portugal verwenden wir Umlauts für kein Wort noch alle Tastaturen damit. Trotzdem sind die Leute nicht dumm, wenn sie ein Passwort mit Umlauten wählen, sollten sie wissen, wie man sie bekommt (vielleicht via Bildschirmtastatur oder Zeichentabelle). Ich hasse Websites, die Passwörter auf alphanumerische Striche beschränken, ein größerer und stärker internationalisierter Zeichensatz könnte studiert werden, aber ich bezweifle, dass dies von allen akzeptiert/erinnert werden würde. –

+2

interessant über das portugiesische Tastaturlayout! Dennoch gibt es so viele Umlaute, die anderswo nicht verfügbar sind. Ich kann leicht einen deutschen Benutzer sehen, der ein Passwort mit 'ß' wählt und sich dann nicht im Internetcafe auf Mallorca in seine E-Mail einloggen kann. Die meisten Benutzer wissen nicht, wie man die Character Map bekommt - die Seite müsste eine Tastatur für Logon bereitstellen .... Ich stimme dir zu, dass die Begrenzung der Länge und die Nichtbenutzung von Großbuchstaben einfach nur dumm sind. –

2

Wenn ich Passwörter eingeben, Ich mag normalerweise längere Sätze schreiben, die ich anstelle von p erinnern kann“% &/k1 oder dergleichen.

So stellen Sie sicher, lassen Sie Ihre Benutzer-Passwörter mehr schreiben als 10 Zeichen: Es frustriert mich immer, wenn ich ein kurzes Passwort mit Sonderzeichen anstelle eines längeren eingeben muss, das einprägsamer und sicherer ist.

+3

Sie werden das nicht glauben, aber einer der größten ISPs in meinem Land beschränkt Passwörter auf 6 bis 8 0-9a-z-Zeichen. Sie erlauben nicht einmal Großbuchstaben, ich werde von ihrer Dummheit beschimpft. –

0

Ich verbiete nur Zeichen, die nicht auf einer Standardtastatur eingegeben werden können. Es gibt keinen Grund, warum ein Benutzer kein sicheres Passwort mit 26 Groß- und Kleinbuchstaben, 10 Zahlen und 20 Symbolen wählen kann.

Wenn Sie ein Anmeldesystem für eine öffentliche Site ausführen, anstatt Benutzer zur Auswahl eines sicheren Kennworts zu zwingen, würde ich die Verwendung von OpenID empfehlen. Auf diese Weise muss sich der Benutzer kein neues schwer zu merkendes Passwort nur für Ihre Site merken.

0

Verwechseln Sie nicht das Passwort des Benutzers.

Stellen Sie sicher, dass Sie eine konsistente Codierung und Regeln in allen Phasen der Kennwortbehandlung verwenden. In Ihrem Fall sollte die Codierung kein Problem sein, da Sie Salze lagern.

Als Beispiel, ich habe mit dummen Regeln wie Passwörter auf 4 Ziffern (!!!), nur alphabetische Zeichen (az), und einige akademische Website stillschweigende Kürzung von Passwörtern auf 10 Zeichen bei der Registrierung und dann scheitern, wenn gekommen Sie haben versucht, sich mit dem langen Passwort anzumelden.

+0

Wie beantworte ich eine Woche alte Frage mit einer bereits akzeptierten Antwort? – asr

0

Ich stolperte über diese Frage, während ich etwas recherchierte, und ich dachte, ich müsste etwas beitragen.

Eigentlich glaube ich Passwörter sollten nicht jedes Zeichen akzeptieren. Das Problem kann mit Zeichen auftreten, die nicht Teil der Standard-ASCII-Tabelle sind.

Nehmen wir zum Beispiel den Buchstaben ü (kleines u mit Umlaut):

  • Im erweiterten ASCII, ist das Zeichen 0x81.
  • In ISO-8859-1 (sehr häufig in westlichen Ländern) ist es 0xFC.
  • in UTF-8 ü hat den Codepunkt U + 00FC, und kann somit als 0xC3BC
  • in UTF-8 das Zeichen nicht normalisiert, auch wenn sein kann, dargestellt werden. So könnte es aus dem Umlaut-Zeichen (nur die ¨) plus der u bestehen: das Ergebnis ist eine andere unterschiedliche Sequenz von Bytes.

In allen oben genannten Fällen wird der Hash für das Passwort unterschiedlich sein und die Anmeldung wird fehlschlagen.

Eine mögliche Lösung, um noch jedes Unicode-Zeichen zuzulassen, ist sicherzustellen, dass die ganze Seite UTF-8 überall verwendet und Passwörter (z. B. mit NFC-Modus) vor dem Hashen normalisiert.
An diesem Punkt kann es jedoch einfacher sein, alle Zeichen zu verbieten, die nicht Teil der Standard-ASCII-Tabelle sind: Bytes 0x00-0x7F oder (noch besser, Strippen Steuerzeichen und andere nicht darstellbar plus Zeilenumbrüche) 0x20-0x7E.

Verwandte Themen