Wydaje się to mniej powszechne w przypadku nowszych witryn, ale wiele witryn, na których potrzebuję konta (np. Do płacenia rachunków itp.), Uniemożliwia mi utworzenie hasła ze spacjami. To tylko utrudnia zapamiętywanie i nie jestem świadomy żadnych ograniczeń bazy danych lub programowania dotyczących spacji w hasłach, zaszyfrowanych lub (wbrew niebiosom) w inny sposób. Dlaczego więc spacja jest tak często dyskryminowana, jeśli chodzi o rejestrację witryny?
16
"insert into USERS (..., password) values (..., '" + $POST['password'] + "');"
: -SOdpowiedzi:
Istnieje ogromna głupota, jeśli chodzi o hasła na stronach internetowych.
(Ograniczając hasło do zakresu 0001 .. 9999, możesz po prostu zapisać je jako liczbę, zwykły tekst w bazie danych)
(W ten sposób deweloperowi lub kierownika, zakłada się, że to rzeczywiście zmusić użytkownikom wybrać bezpieczne hasło, podczas gdy reguła jako „Hasło musi zawierać min. 6 znaków i zawierać przynajmniej jedną wielką literę, małą litera i cyfra „magicznie tego nie zrobi)
lub,
lub,
We wszystkich trzech przypadkach deweloper miał tylko pewność, że takie hasła będą przechowywane poprawnie.
W pierwszym przypadku, co się stanie, jeśli
é
zostanie%C3%A9
wysłany? A co jeśli baza danych będzie przechowywanaé
niepoprawnie?W drugim przypadku, co jeśli PHP (dlaczego PHP?) Nie radzi sobie z Unicode i robi coś strasznego po otrzymaniu takiego hasła? Co jeśli
<
postać powoduje problemy? Co się stanie, jeśli&
znak zostanie zinterpretowany jako separator w adresie URL (zakładając, że z jakiegoś powodu hasło jest wysyłane przez GET zamiast POST)? Co jeśli'
zostanie zinterpretowane przez bazę danych, ponieważ, zgadnij co, nie mamy pojęcia, co to jest SQL Injection i jak tego uniknąć? A co, jeśli'
zostanie przekształcony\'
?W trzecim przypadku, co jeśli PHP (ponownie?) Przycina białe znaki w niektórych przypadkach, a nie w innych? Co się stanie, jeśli administratorzy (którzy mają zaskakująco dostęp do haseł użytkowników w postaci zwykłego tekstu) zostaną utraceni, ponieważ widzą tylko jedną białą spację, a użytkownik ustawił trzy kolejne białe spacje ?
We wszystkich trzech przypadkach te dwuznaczności można łatwo rozwiązać za pomocą testów , zwłaszcza testów jednostkowych. Ale w ogromnej liczbie projektów w ogóle nie ma testów i nie ma czasu na testowanie (ale wciąż jest dużo czasu na debugowanie później).
Oznacza to, czy programista próbuje pomyśleć o możliwych konsekwencjach dopuszczenia spacji , znaków unicode, lub po prostu dowolnego znaku spoza ASCII 48..57 ∪ 65..90 ∪ 97..122 (cyfry, małe litery, wielkie litery) , najłatwiejszym sposobem, gdy testowanie nie jest możliwe, jest po prostu ich zabronić .
Moim zdaniem jest to jedyny powód, aby zabraniać spacji. Yannis Rizos podał kolejny powód związany z UX. Choć teoretycznie jest to prawdopodobny powód, w praktyce nie działa wcale: strony tworzone przez ludzi, którzy naprawdę dbają o UX, nie naprawiają głupich reguł haseł. Zamiast tego strony internetowe, w których spacja jest faktycznie zabroniona, są w większości tworzone przez osoby, które nigdy nie słyszały o UX . Jest to szczególnie prawdziwe, ponieważ zakazanie jakiegokolwiek znaku jest naprawdę denerwujące z punktu widzenia UX, ponieważ wszelkie ograniczenia związane z hasłem, w tym przydatne, jako minimalna liczba znaków.
źródło
Odpowiedź brzmi: historia
Wydaje się zapominać, że podstawą wielu to pochodzi z czasów, gdy przechowywanie nie było skutecznie darmowe (na dysku lub w pamięci), gdy nasza zdolność do zarządzania wszystkie te rzeczy był nieco mniejszy niż obecnie i równie zdolność zautomatyzowanych systemów próba złamania tego samego była również nieco mniejsza.
Istnieje wiele rantów na temat haseł opartych na tym, co wiemy teraz i co możemy teraz zrobić, ale prosty fakt jest taki, że często mamy do czynienia z kombinacją tradycyjnego myślenia i starszych systemów.
Powinny istnieć ograniczenia w nowych systemach teraz ? Miałbym nadzieję, że nie - teraz o wiele mniej powodu
źródło
IMHO, Jest głupotą jakakolwiek strona / aplikacja, która używa nowoczesnego haszowania i / lub solenia do przechowywania haseł, aby nie dopuszczać spacji w hasłach. Jednak niektóre starsze systemy (gdzieś o tym czytają) nadal przekazują hasła w postaci zwykłego tekstu - więc nie dopuszczanie spacji może mieć sens. Ponadto niektóre aplikacje mogą „usuwać” wszystkie otrzymywane dane wejściowe. Tak więc hasło zaczynające się lub kończące spacją nie będzie dobre (oczywiście było to wymyślone, ale możesz sobie wyobrazić, co nie może się stać z prawie każdym, kto wymyśli własną stronę). Nie ma nic „złego” w dopuszczaniu spacji w hasłach - jak zauważyłeś, DB nie będą blokować skrótów ani wersji tekstu jawnego.
Właściwie większość moich przyjaciół z Windowsa nie wie, że mogą używać spacji w swoich hasłach - więc może, zgodnie z odpowiedzią Tima Medory, właściciele witryn nie chcą ryzykować z lamami (przepraszam, że tak), a może niektórzy z nich mają nieporozumienia i / lub nieświadome korzyści, jakie mogą zapewnić miejsca.
źródło
What's the point then?
Drobną kwestią jest to, że hasło ma mniejszą entropię, jak zamierzał użytkownik. Niektóre systemy domyślnie trymują zmienne GET / POST, a (mało prawdopodobna) zmiana tego zachowania spowoduje poważniejsze problemy.Robi się to z tego samego powodu, że wiele witryn nie zezwala na łączniki, apostrofy lub litery spoza ASCII w nazwach, mimo że są to bardzo powszechne praktyki nawet w samych Stanach Zjednoczonych i wymaga więcej pracy, aby zabronić tych znaków niż po prostu zezwolić im.
Robi się to również z tego samego powodu, dla którego filtry słów wielu witryn nie pozwalają używać słów takich jak „zarozumiały”, „opóźniający” lub nawet „kumulować” (chociaż wiele popularnych rasistowskich obelg jest w porządku).
To dlatego, że wielu programistów najwyraźniej zupełnie nie ma zdrowego rozsądku, a przynajmniej ma bardzo ograniczoną wyobraźnię, rozważając możliwe wkłady użytkowników i scenariusze. Niewielki procent z nich może działać na podstawie fałszywych informacji (że wykluczenie znaków innych niż alfanumeryczne jest w pewien sposób standardową praktyką lub że algorytm mieszający lub metoda przechowywania nie są w stanie obsłużyć spacji lub znaków specjalnych). Inni mogą być po prostu leniwi - martwią się problemami związanymi z zestawem znaków, więc po prostu ograniczają wprowadzanie danych do minimalnej przestrzeni znaków. A potem mogą być tacy, którzy nadgorliwie walidują dane wejściowe / warunki sanitarne z powodu paranoi z powodu niezrozumienia prawdziwych zagrożeń.
źródło