Dlaczego niektóre witryny zapobiegają spacjom w hasłach?


16

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?


Być może niektóre witryny używają funkcji jednokrotnego logowania, zakładając, że logowanie jednokrotne wymaga niepustych haseł (choć nie jestem pewien)!
NoChance,

1
To, co naprawdę mnie przeraża, to fakt, że strony nie zgadzają się na pojedynczy cytat. Jaki mógłbyś mieć inny powód niż włączenie "insert into USERS (..., password) values (..., '" + $POST['password'] + "');" : -S
Christian Klauser,

Powinien był udać się do bezpieczeństwa, a nie programistów. Prawdopodobnie już to istnieje.
Dan McGrath,

Odpowiedzi:


20

Istnieje ogromna głupota, jeśli chodzi o hasła na stronach internetowych.

  • Niektóre mają przyczyny czysto techniczne (ważne czy nie, to inne pytanie, ale prawie wszystkie z nich nie są):

Twoje hasło musi składać się z czterech znaków i mieć tylko cyfry.

(Ograniczając hasło do zakresu 0001 .. 9999, możesz po prostu zapisać je jako liczbę, zwykły tekst w bazie danych)

  • Inne są wyjaśnione błędnymi myślami, które sprawią, że hasła będą bezpieczniejsze :

Twoje hasło musi zaczynać się wielką literą, a kończyć cyfrą.

(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)

  • Inne wyjaśniono wreszcie faktem, że hasła są przechowywane w postaci zwykłego tekstu , i istnieją pewne niejasności co do sposobu ich przechowywania, przetwarzania lub odzyskiwania, i nie ma czasu na ich testowanie jednostkowe.

Twoje hasło zawiera nieprawidłowy znak é.

lub,

Twoje hasło y$₯46¥*A'xD<7&฿=ᴙcN&sF5_Ở!dzawiera nieprawidłowe znaki. Używaj tylko znaków alfabetu łacińskiego i cyfr.

lub,

Twoje hasło nie może zawierać białych znaków.

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%A9wysł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.


Nie wspominając o tym, że eliminując spacje, eliminujesz garść łatwych do zapamiętania długich haseł (a ich długość okazała się bardziej skuteczna niż złożoność w przypadku łamania) i zachęcasz użytkowników do stosowania bełkotliwych haseł, które są znacznie mniej niezapomniane niż długie serie przestrzeni.
Lèse majesté

1
Zgadzam się z większością tego, co czytam, ale mam naprawdę trudny czas, aby przeczytać stwierdzenie „najłatwiej, gdy testowanie nie jest możliwe ...”. Testowanie niemożliwe? Każdy, kto zgadza się na projekt, w którym ma to miejsce: głupota skutecznie zmaksymalizowana ... Tak, wiem, że tak się dzieje: -
Thomas

@Thomas: jest to różnica między teorią a wiedzą w ogóle i praktyką z ogólną ignorancją i ograniczeniami czasowymi, w których wiele osób nie chce tracić czasu na testowanie, ignorując to, że spędzi co najmniej dwa razy później na debugowaniu.
Arseni Mourzenko

Może to być rozsądne wymagać, aby użytkownicy definiują się kod, który składa się wyłącznie z cyfr, czy samo hasło może być potrzebne rzeczy jak zautomatyzowanego dostępu telefonicznego, ale takie hasło nie powinno być głównym poświadczeń uwierzytelniania dostępu komputerowego.
supercat

3

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


Czy twierdzisz, że były ograniczenia technologiczne ze spacjami w hasłach, których wcześniej nie było? Jaką rolę odegrała w tym pamięć?
Ian Hunter,

1
Sugeruję, że ograniczenia technologiczne i mniej złożone ograniczenia zewnętrzne (i możliwe zastosowanie „trymowania”) oznaczały, że ludzie inaczej myśleli o tym, co byłoby odpowiednie i dopuszczalne. Możesz nałożyć ograniczenia na hasła, aby upewnić się, że mogą one zostać zapamiętane, ponieważ ich resetowanie jest trudniejsze. Możesz ich nie szyfrować, ponieważ po prostu dotarcie do miejsca, w którym możesz je przeczytać, jest (w tym czasie) stosunkowo bardzo trudne (w każdym razie systemy nie są dostępne ze świata zewnętrznego). Różne czasy, zupełnie inne procesy myślowe, które pozostawiły dziedzictwo
Murph

2

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.


1
Wolę usuwać początkowe / końcowe spacje z haseł, ponieważ powodują one problemy, ale to nie jest powód, aby je blokować - zostaną one usunięte zarówno podczas ustawiania, jak i testowania, bez problemu.
Loren Pechtel,

A jakie dokładnie są „problemy”? W odpowiedzi podkreślałem, że spacje POWINNY BYĆ dozwolone. „Zostaną rozebrani zarówno podczas ustawiania, jak i testowania” - o co więc chodzi? następnie oba „1 4m 1337” i „1 4am 1337” mają tę samą wartość (teoretycznie istnieje nieskończona liczba możliwości).
yati sagade,

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.
yannis

@Yati sagade: I'm NIE mówię o wewnętrznych przestrzeni. Mówię o wiodących i końcowych spacjach - ludzie nie zdają sobie sprawy, że jest tam miejsce i powoduje to błędy logowania. Podobnie, jeśli zobaczysz hasło, w którym wszystkie wielkie litery są odwracane małymi literami, prawdopodobnie jest to ktoś, kto nie zdawał sobie sprawy, że włączona jest blokada wielkich liter.
Loren Pechtel,

-1

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ń.


Z jakiego powodu musiałbyś zastosować białą listę poza wymuszaniem kodowania określonego znaku? Opierając się na tej opinii, ograniczanie dowolnych znaków nie przynosi żadnych korzyści, a jednocześnie osłabia hasła wybrane przez użytkowników. Wszystkie podane przeze mnie przykłady są symptomami programistów, którzy nie zastanawiają się nad wyborem opcji projektowych.
Lèse majesté
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.