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?
16
"insert into USERS (..., password) values (..., '" + $POST['password'] + "');"
: -SAntworten:
Es gibt eine Menge Dummheiten, wenn es um Passwörter auf Websites geht.
(Indem Sie ein Kennwort auf den Bereich 0001 .. 9999 beschränken, können Sie es einfach als Zahl im Klartext in der Datenbank speichern.)
(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)
oder,
oder,
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%A9
beim 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.
quelle
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
quelle
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.
quelle
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.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.
quelle