Чому певні сайти запобігають пробілам у паролях?


16

Це здається менш поширеним із новішими веб-сайтами, але багато веб-сайтів, у яких мені потрібен обліковий запис (наприклад, для оплати рахунків тощо), не дозволяють мені створити пароль із пробілами в ньому. Це лише ускладнює запам’ятовування , і я знаю, що немає баз даних або обмежень програмування пробілів у паролях, зашифрованих або (не дай бог) інакше. Чому тоді пробіл настільки дискримінований, коли мова заходить про реєстрацію на сайті?


Можливо, деякі сайти використовують Single Sign On, припускаючи, що SSO вимагає незаповнені паролі (не впевнені).
NoChance

1
Мене насправді лякає, коли сайти спеціально забороняють єдину цитату. З якою можливою причиною ви могли б окрім включення "insert into USERS (..., password) values (..., '" + $POST['password'] + "');" : -S
Крістіан Клаузер

Повинні були піти в безпеку, а не програмісти. Це, мабуть, вже існує.
Ден МакГрат

Відповіді:


20

Існує величезна кількість дурощів, коли справа стосується паролів на веб-сайтах.

  • У деяких є чисто технічні причини (дійсні чи ні, це вже інше питання, але майже всі вони не є):

Ваш пароль повинен містити чотири символи та мати лише цифри.

(Обмеживши пароль діапазоном 0001 .. 9999, ви можете просто зберігати їх як число, простий текст у базі даних)

  • Інші пояснюються помилковими думками, що вони зроблять паролі більш безпечними :

Ваш пароль повинен починатися з великої літери і закінчуватися цифрою.

(Роблячи це, розробник або менеджер припускали, що це фактично змусить користувачів вибрати безпечний пароль, тоді як правило "Ваш пароль повинен містити не менше 6 символів і містити принаймні одну велику літеру, малі літери та цифра "магічно не зможе це зробити)

  • Інші, нарешті, пояснюються тим, що паролі зберігаються в простому тексті , і існують певні неясності щодо того, як вони зберігаються, обробляються або витягуються, і немає часу на те, щоб перевірити їх одиницю.

Ваш пароль містить недійсний символ é.

або,

Ваш пароль y$₯46¥*A'xD<7&฿=ᴙcN&sF5_Ở!dмістить кілька недійсних символів. Використовуйте символи з латинського алфавіту та лише цифри.

або,

Ваш пароль не може містити символів пробілу.

У всіх трьох випадках розробник просто гарантував, що такі паролі будуть зберігатися правильно.

  • У першому випадку, що, якщо éбуде перетворено %C3%A9надіслане? Або що робити, якщо база даних зберігатиметься éнеправильно?

  • У другому випадку, що робити, якщо PHP (чому PHP?) Не може мати справу з unicode, і робить щось жахливе при отриманні такого пароля? Що робити, якщо <персонаж викликає неприємності? Що робити, якщо &символ трактується як роздільник у URL-адресі (якщо припустити, що чомусь пароль надсилається через GET замість POST)? Що робити, якщо 'інтерпретується база даних, тому що, здогадайтесь, ми не маємо уявлення, що таке інжекція SQL і як цього уникнути? Або що робити, якщо 'перетворюється на \'?

  • У третьому випадку, що робити, якщо PHP (знову ж таки?) Обрізає пробіли в деяких випадках, а не в інших? Що робити, якщо адміністратори (у яких напрочуд доступ до паролів користувачів у простому тексті) втрачені, оскільки вони бачать лише одне пробіл, а користувач встановив три послідовних пробіли ?

У всіх трьох випадках ці двозначності легко вирішуються за допомогою тестування , особливо тестування одиниць. Але у величезній кількості проектів взагалі немає тестування і часу на тестування (але все ж достатньо часу для налагодження пізніше).

Це означає, що чи розробник намагається подумати про можливі наслідки дозволу пробілів , або символів Unicode, або просто будь-якого символу поза ASCII 48..57 ∪ 65..90 ∪ 97..122 (цифри, малі літери, великі літери) , найпростіший спосіб, коли тестування неможливо - це просто заборонити їх .

На мою думку, це єдина причина заборонити пробіли. Янніс Різос дав ще одну причину, пов’язану з UX. Будучи правдоподібною причиною в теорії, це практично не працює на практиці: веб-сайти, створені людьми, які насправді дбають про UX, не фіксують дурних правил пароля. Натомість веб-сайти, де пробіл фактично заборонений, здебільшого роблять люди, які ніколи не чули про UX . Це особливо актуально, оскільки заборона будь-якого символу насправді дратує з точки зору UX, оскільки будь-яке обмеження, пов’язане з паролем, включаючи корисні, як мінімальна кількість символів.


Не кажучи вже про те, що при усуненні пробілів ви усуваєте купу простих запам'ятовуваних довгих паролів (а довжина виявилася ефективнішою, ніж складність проти розтріскування) та заохочуючи користувачів приймати гібридні паролі, які набагато менш запам'ятовуються, ніж довга серія просторів.
Lèse majesté

1
Я згоден з більшістю прочитаного, але почуваю твердження, "найпростіший спосіб, коли тестування неможливо ...". Тестування не можливе ??? Кожен, хто погоджується на проект, де це відбувається: глупство ефективно максимізується ... Так, я знаю, що це відбувається: - |
Томас

@Thomas: це різниця між теорією та знаннями взагалі та практикою з її загальним незнанням та обмеженням у часі, коли багато людей не хочуть витрачати час на тестування, ігноруючи, що вони витратять хоча б двічі пізніше на налагодження.
Арсеній Муренко

Це може бути розумно вимагати, щоб користувачі визначають в код доступу , який складається тільки з цифр , якщо ж код доступу можуть бути необхідні для таких речей , як автоматизований доступ до телефонного зв'язку, але такий код доступу не повинно бути основною аутентифікації облікових даних для комп'ютерного доступу.
supercat

3

Відповідь - Історія

Ми, здається, забуваємо, що в основі цього багато чого походить з часу, коли зберігання не було ефективно вільним (на диску чи в пам'яті), коли наша здатність керувати всіма цими речами була дещо меншою, ніж зараз, і однаково здатність автоматизованих систем спроби зламати ж було також дещо менше.

Існує маса сказувань паролів на основі того, що ми знаємо зараз, і що ми можемо зробити зараз, але простий факт полягає в тому, що ми часто маємо справу з поєднанням застарілого мислення та застарілих систем.

Чи мають бути обмеження в нових системах зараз ? Я би сподівався, що ні - набагато менше причин зараз


Ви кажете, що існували технологічні обмеження з пробілами у паролях, яких раніше не було? Яку роль в цьому саме відіграло сховище?
Ян Хантер

1
Я припускаю, що технологічні обмеження та менш складні зовнішні обмеження (і, можливо, використання "обрізки") означали, що люди по-різному думали про те, що було б доцільно та допустимо. Ви можете встановити обмеження на паролі, щоб гарантувати, що вони підлягають запам'ятовуванню, оскільки їх скидання важче. Ви можете не зашифрувати їх, оскільки просто дістатися до місця, де ви можете їх прочитати, є (на той час) відносно дуже важко (і в будь-якому випадку системи недоступні із зовнішнього світу). Різні часи, абсолютно різні процеси мислення, які залишили спадщину
Мерф

2

IMHO, абсолютно нерозумно будь-який сайт / додаток, який використовує сучасні хешування та / або засолювання для зберігання паролів, щоб не допускати пробілів у паролях. Але деякі застарілі системи (читайте про це десь) все ще передають паролі в простому тексті - тому не допускаючи пробілів, можливо, є сенс. Також деякі програми можуть "знімати" всі введені рядки, які вони отримують. Отже, пароль, починаючи або закінчуючи пробілом, не буде корисним (звичайно, це було надто надумано, але ви можете уявити, що не може статися майже з будь-ким, хто приходить зі своїм власним сайтом). Немає нічого "поганого" у допущенні пробілів у паролях - як ви зазначаєте, БД не заборонять хеші чи версії простого тексту.

Насправді більшість моїх друзів у Windows не знають, що вони можуть використовувати пробіли у своїх паролях. Тож, можливо, згідно з відповіддю Тіма Медори, власники сайтів не хочуть ризикувати з ламами (пробачте про це), а може, деякі з них мають неправильні уявлення та / або незнання переваг, які можуть надати простір.


1
Я віддаю перевагу вилучення проміжних та проміжних пробілів у паролів, оскільки вони, як правило, створюють проблеми, але це не є причиною заборонити їх - вони просто позбавляться і налаштування, і тестування, без проблем.
Лорен Печтел

А які саме "проблеми"? Я підкреслював у відповіді, що пробіли ДОБРІТЬ дозволено. "Вони будуть позбавлені і налаштування, і тестування" - Який сенс тоді? тоді "1 4m 1337" і "1 4am 1337" обидва хеша мають однакове значення (насправді теоретично існує безліч можливостей).
yati sagade

What's the point then?Незначною є те, що пароль має меншу ентропію, як призначено користувачем. І деякі системи обробляють GET / POST vars за замовчуванням, (навряд чи) зміна такої поведінки призведе до більш серйозних проблем.
янніс

@Yati sagade: Я НЕ кажу про зачищення внутрішніх просторів. Я говорю про провідні та кінцеві простори - люди не розуміють, що простір є, і це спричиняє помилки входу. Крім того, якщо ви бачите пароль, у якому всі шапки перевертають його на малі регістри, ймовірно, хтось, хто не зрозумів, що функція блокування шапки не ввімкнена.
Лорен Печтел

-1

Це робиться з тієї ж причини, що на багатьох сайтах забороняються дефіси, апострофи чи літери, що не належать до ASCII, навіть якщо це дуже поширена практика навіть у США, і це вимагає більше роботи, щоб заборонити цих символів, ніж просто дозволяти їх.

Це також робиться з тієї ж причини, що багато фільтрів слів на сайтах не дозволять вам використовувати такі слова, як "зухвалий", "загальмований" або навіть "накопичувати" (хоча багато поширених расових нерівностей абсолютно добре).

Це тому, що багатьом розробникам, мабуть, не вистачає здорового глузду, або, принаймні, дуже обмежена уява, коли розглядаються можливі введення та сценарії користувачів. Невеликий відсоток з них може відпрацьовувати неправдиву інформацію (що виключення не алфавітно-цифрових символів якимось чином є звичайною практикою, або що алгоритм хешування або метод зберігання не може обробляти пробіли або спеціальні символи). Інші можуть просто лінуватися - вони турбуються про проблеми з комірками, тому вони просто обмежують введення мінімальним простором символів. І тоді можуть бути ті, хто здійснює надмірне підтвердження введення / санітарію через параноїю через нерозуміння реальних загроз.


З якої причини ви повинні використовувати білий список, не застосовуючи певне кодування символів? На цьому я базую те, що обмеження довільних символів не дає жодних переваг при ослабленні паролів, які користувачі вибирають. Усі приклади, які я наводив, - це симптоми розробників, які недостатньо ретельно продумують вибір дизайну.
Lèse majesté
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.