Warum verhindern bestimmte Websites Leerzeichen in Kennwörtern?


16

Bei neueren Websites scheint dies weniger häufig zu sein, aber viele Websites, auf denen ich ein Konto benötige (z. B. zum Bezahlen von Rechnungen usw.), hindern mich daran, ein Kennwort mit Leerzeichen zu erstellen. Dies macht es nur schwieriger, sich an Dinge zu erinnern , und mir sind keine Datenbank- oder Programmierbeschränkungen für Leerzeichen in Passwörtern bekannt, die verschlüsselt sind oder die (der Himmel verbietet) auf andere Weise. Warum wird die Leertaste dann so häufig diskriminiert, wenn es darum geht, sich für eine Website anzumelden?


Möglicherweise verwenden einige Sites Single Sign On, vorausgesetzt, SSO erfordert nicht leere Kennwörter (obwohl nicht sicher)!
NoChance

1
Was mir wirklich Angst macht, ist, wenn Websites das einfache Anführungszeichen ausdrücklich verbieten. Welchen möglichen Grund könnten Sie haben, außer zu aktivieren "insert into USERS (..., password) values (..., '" + $POST['password'] + "');" : -S
Christian Klauser

Hätte zur Sicherheit gehen sollen, nicht zu Programmierern. Dies ist dort aber wahrscheinlich schon vorhanden.
Dan McGrath

Antworten:


20

Es gibt eine Menge Dummheiten, wenn es um Passwörter auf Websites geht.

  • Einige haben rein technische Gründe (gültig oder nicht, das ist eine andere Frage, aber fast alle sind es nicht):

Ihr Passwort muss aus vier Zeichen bestehen und nur Ziffern enthalten.

(Indem Sie ein Kennwort auf den Bereich 0001 .. 9999 beschränken, können Sie es einfach als Zahl im Klartext in der Datenbank speichern.)

  • Andere erklären sich aus dem Irrtum, dass sie Passwörter sicherer machen :

Ihr Passwort muss mit einem Großbuchstaben beginnen und mit einer Ziffer enden.

(Durch diese die Entwickler tun, oder der Manager davon ausgegangen, dass dies tatsächlich die Benutzer zwingen , ein sicheres Passwort zu wählen, während die Regel als „Ihr Passwort min enthalten muss. 6 Zeichen mit mindestens einem Großbuchstaben, Kleinbuchstaben und ein Ziffer "wird es auf magische Weise nicht schaffen)

  • Andere werden schließlich durch die Tatsache erklärt, dass Passwörter im Klartext gespeichert sind und es einige Unklarheiten darüber gibt, wie sie gespeichert, verarbeitet oder abgerufen werden, und es keine Zeit gibt, sie nach dem Unit-Test zu testen.

Ihr Passwort enthält ein ungültiges Zeichen é.

oder,

Ihr Passwort y$₯46¥*A'xD<7&฿=ᴙcN&sF5_Ở!denthält einige ungültige Zeichen. Verwenden Sie nur lateinische Buchstaben und Ziffern.

oder,

Ihr Passwort darf keine Leerzeichen enthalten.

In allen drei Fällen hat der Entwickler lediglich sichergestellt, dass solche Passwörter korrekt gespeichert werden.

  • Was passiert im ersten Fall, wenn ées %C3%A9beim Senden in umgewandelt wird? Oder was ist, wenn die Datenbank éfalsch gespeichert wird ?

  • Was passiert im zweiten Fall, wenn PHP (warum PHP?) Nicht mit Unicode umgehen kann und bei einem Passwort wie diesem etwas Schreckliches tut? Was ist, wenn der <Charakter Ärger macht? Was ist, wenn ein &Zeichen als Trennzeichen in einer URL interpretiert wird (unter der Annahme, dass das Kennwort aus irgendeinem Grund über GET anstelle von POST gesendet wird)? Was ist, wenn 'es von der Datenbank interpretiert wird, weil wir, raten Sie mal, keine Ahnung haben, was SQL Injection ist und wie man es vermeidet? Oder was ist, wenn 'sich in verwandelt \'?

  • Was passiert im dritten Fall, wenn PHP (erneut?) In einigen Fällen Leerzeichen und in anderen nicht schneidet? Was ist, wenn die Administratoren (die überraschenderweise im Klartext Zugriff auf Benutzerpasswörter haben) verloren gehen, weil sie nur ein Leerzeichen sehen, während der Benutzer drei aufeinanderfolgende Leerzeichen gesetzt hat ?

In allen drei Fällen lassen sich diese Unklarheiten durch Tests , insbesondere Unit-Tests, leicht lösen . Bei einer großen Anzahl von Projekten gibt es jedoch überhaupt keine Tests und keine Zeit zum Testen (aber immer noch viel Zeit zum späteren Debuggen).

Dies bedeutet, ob der Entwickler versucht, über die möglichen Konsequenzen nachzudenken , Leerzeichen oder Unicode-Zeichen oder nur beliebige Zeichen außerhalb von ASCII 48..57 ∪ 65..90 ∪ 97..122 (Ziffern, Kleinbuchstaben, Großbuchstaben) zuzulassen. , der einfachste Weg, bei der Prüfung nicht möglich ist, ist nur sie zu verbieten .

Meiner Meinung nach ist dies der einzige Grund, Leerzeichen zu verbieten. Yannis Rizos gab einen weiteren Grund im Zusammenhang mit UX an. Obwohl dies theoretisch ein plausibler Grund ist, funktioniert es in der Praxis überhaupt nicht: Websites, die von Leuten erstellt wurden, die sich wirklich für UX interessieren, reparieren keine dummen Passwortregeln. Stattdessen werden Websites, auf denen Leerzeichen eigentlich verboten sind, größtenteils von Personen erstellt, die noch nie von UX gehört haben . Dies gilt insbesondere, da das Verbieten von Zeichen aus UX-Sicht sehr ärgerlich ist, da alle kennwortbezogenen Einschränkungen, einschließlich der nützlichen, die Mindestanzahl von Zeichen sind.


Ganz zu schweigen davon, dass Sie durch das Eliminieren von Leerzeichen eine Reihe von leicht zu merkenden langen Passwörtern eliminieren (und die Länge hat sich als effektiver als die Komplexität gegen das Knacken erwiesen) und Benutzer dazu ermutigen, Kauderwelsch-Passwörter zu verwenden, die weitaus weniger einprägsam sind als eine lange Reihe von Räumen.
Majestätsbeleidigung

1
Ich stimme mit den meisten meiner Lektüren überein, aber es fällt mir wirklich schwer, die Aussage "der einfachste Weg, wenn ein Test nicht möglich ist ..." zu verdauen. Testen nicht möglich ??? Jeder, der einem Projekt zustimmt, bei dem das passiert: Dummheit effizient maximiert ... Ja, ich weiß, dass es passiert: - |
Thomas

@Thomas: Dies ist der Unterschied zwischen Theorie und Wissen im Allgemeinen und der Praxis mit ihren allgemeinen Unkenntnissen und Zeitbeschränkungen, bei denen viele Leute keine Zeit mit Testen verschwenden möchten und ignorieren, dass sie das Debuggen mindestens zweimal später durchführen werden.
Arseni Mourzenko

Es kann sinnvoll sein, Benutzer zur Definition eines Passcodes aufzufordern, der nur aus Ziffern besteht, wenn derselbe Passcode beispielsweise für den automatisierten Telefonzugriff benötigt wird. Ein solcher Passcode sollte jedoch nicht der Hauptauthentifizierungsnachweis für den computergestützten Zugriff sein.
Supercat

3

Die Antwort lautet Geschichte

Wir scheinen zu vergessen, dass die Grundlage für vieles eine Zeit ist, in der der Speicher nicht effektiv frei war (auf der Festplatte oder im Speicher), als unsere Fähigkeit, all diese Dinge zu verwalten, etwas geringer war als heute und ebenso die Fähigkeit automatisierter Systeme zu versuchen, dasselbe zu knacken, war auch etwas weniger.

Es gibt viele Probleme mit Passwörtern, die auf dem basieren, was wir jetzt wissen und was wir jetzt tun können, aber die einfache Tatsache ist, dass wir es oft mit einer Kombination aus Legacy-Denken und Legacy-Systemen zu tun haben.

Sollte es in neuen Systemen Einschränkungen jetzt ? Ich würde nicht hoffen - weit weniger Grund jetzt


Wollen Sie damit sagen, dass es technologische Einschränkungen mit Leerzeichen in Kennwörtern gab, die vorher nicht vorhanden waren? Welche Rolle spielte der Speicher dabei genau?
Ian Hunter

1
Ich schlage vor, dass technologische Grenzen und weniger komplexe externe Einschränkungen (und möglicherweise die Verwendung von "Trimm") dazu führten, dass die Leute anders dachten, was angemessen und zulässig wäre. Sie können den Passwörtern Grenzen setzen, um sicherzustellen, dass sie leicht zu merken sind, da es schwieriger ist, sie zurückzusetzen. Möglicherweise verschlüsseln Sie sie nicht, da es (zur Zeit) relativ schwierig ist, an einen Ort zu gelangen, an dem Sie sie lesen können (und die Systeme auf keinen Fall von außen zugänglich sind). Unterschiedliche Zeiten, völlig unterschiedliche Denkprozesse, die ein Erbe hinterlassen haben
Murph

2

IMHO, es ist absolut dumm von jeder Site / App, die modernes Hashing und / oder Salting zum Speichern von Passwörtern verwendet, um keine Leerzeichen in Passwörtern zuzulassen. Einige Legacy-Systeme (lesen Sie dazu irgendwo nach) geben Kennwörter jedoch immer noch im Klartext weiter. Daher ist es möglicherweise sinnvoll, dort keine Leerzeichen zuzulassen . Einige Apps können auch alle empfangenen Zeichenfolgeneingaben "entfernen". Ein Passwort, das mit einem Leerzeichen beginnt oder endet, ist also nicht gut (das wurde natürlich überarbeitet, aber Sie können sich vorstellen, was nicht passieren kann, wenn fast jeder seine eigene Site erstellt). Es ist nicht schlecht, Leerzeichen in Passwörtern zuzulassen. Wie Sie bereits betont haben, lassen die DBs weder Hashes noch Klartextversionen zu.

Tatsächlich wissen die meisten meiner Windows-Freunde nicht, dass sie Leerzeichen in ihren Passwörtern verwenden können. Laut Tim Medoras Antwort möchten Websitebesitzer also möglicherweise kein Risiko mit Lamahs eingehen (entschuldigen Sie das), oder vielleicht haben einige von ihnen Missverständnisse und / oder Unkenntnis der Vorteile, die Räume bieten können.


1
Ich ziehe es vor, führende / nachfolgende Leerzeichen von Passwörtern zu entfernen, da diese dazu neigen, Probleme zu verursachen, aber das ist kein Grund, sie zu verbieten - sie werden nur beim Einstellen und Testen entfernt, kein Problem.
Loren Pechtel

Und was genau sind die "Probleme"? Ich habe in der Antwort betont, dass Leerzeichen erlaubt sein sollten. "Sie werden sowohl beim Einstellen als auch beim Testen entkleidet" - Was ist dann der Sinn? dann haben "1 4m 1337" und "1 4am 1337" beide den gleichen Wert (tatsächlich gibt es unendlich viele Möglichkeiten in der Theorie).
Yati Sagade

What's the point then?Ein kleiner Punkt ist, dass das Passwort für den Benutzer weniger entropisch ist. Bei einigen Systemen werden GET / POST-Versionen standardmäßig angepasst. Eine (unwahrscheinliche) Änderung dieses Verhaltens führt zu schwerwiegenderen Problemen.
Yannis

@ Yati sagade: Ich spreche NICHT über das Entfernen von Innenräumen. Ich spreche über führende und nachfolgende Leerzeichen - die Leute merken nicht, dass der Leerzeichen vorhanden ist und dies führt zu Anmeldefehlern. Wenn Sie ein Passwort sehen, bei dem nur Großbuchstaben verwendet werden, ist dies wahrscheinlich jemand, der nicht bemerkt hat, dass die Feststelltaste aktiviert ist.
Loren Pechtel

-1

Dies geschieht aus dem gleichen Grund, weil viele Sites keine Bindestriche, Apostrophe oder Nicht-ASCII-Buchstaben in Namen zulassen, obwohl dies auch nur in den USA weit verbreitet ist und es mehr Arbeit erfordert, diese Zeichen zu verbieten, als nur zuzulassen Sie.

Dies geschieht auch aus dem gleichen Grund, aus dem Sie in den Wortfiltern vieler Websites Wörter wie "übermütig", "hemmend" oder sogar "akkumulieren" nicht verwenden können (obwohl viele gängige rassistische Bögen völlig in Ordnung sind).

Das liegt daran, dass vielen Entwicklern offensichtlich der gesunde Menschenverstand fehlt oder sie zumindest bei der Betrachtung möglicher Benutzereingaben und -szenarien nur eine sehr begrenzte Vorstellungskraft haben. Ein kleiner Prozentsatz von ihnen arbeitet möglicherweise mit falschen Informationen (das Ausschließen nicht-alphanumerischer Zeichen ist in gewisser Weise eine Standardpraxis oder der Hash-Algorithmus oder die Speichermethode können keine Leerzeichen oder Sonderzeichen verarbeiten). Andere mögen einfach faul sein - sie sind besorgt über Zeichensatzprobleme und beschränken Eingaben einfach auf einen minimalen Zeichenbereich. Und dann gibt es möglicherweise diejenigen, die aufgrund von Paranoia aufgrund eines Mangels an Verständnis für echte Bedrohungen übereifrige Validierungs- / Hygienemaßnahmen durchführen.


Aus welchem ​​Grund müssten Sie eine Whitelist verwenden, die über die Durchsetzung einer bestimmten Zeichenkodierung hinausgeht? Die Tatsache, dass das Beschränken von beliebigen Zeichen keine Vorteile bringt, während die Benutzer die von ihnen gewählten Passwörter schwächen, ist die Grundlage für diese Meinung. Alle Beispiele, die ich gegeben habe, sind Symptome von Entwicklern, die nicht sorgfältig genug über Designentscheidungen nachdenken.
Majestätsbeleidigung
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.