LINUX.ORG.RU

Зачем, почему и как устроены пароли на сайтах?

 ,


0

1

Почему на некоторых сайтах при регистрации надо придумать пароль где должны быть маленькие и большие буковки латинского алфавита, но не должно быть киррилических символов? При этом надо добавить спец-символы, такие как: звездочка, квадратные и круглые скобки, знак процента, решетка, но нельзя добавить пробел или тире? И так в разных вариациях от сайта к сайту.

Зачем они это делают?

Я на своих сайтиках ставлю ограничение на мин-макс количества символов в пароле. И разрешаю вводить всё что можно ввести с клавиатуры. Все равно ведь пароль в базе хранится хэшем. В особо параноидальном случае с солью...

Или я что-то неправильно думаю?

Linux тут ни при чем, сижу в Ubuntu на ZF клепаю сайтец, и думаю зачем мне вообще пароли проверять...

Перемещено maxcom из talks

★★★

но не должно быть киррилических символов

Кодировкопроблемы могут опечалить пользователя.

PolarFox ★★★★★
()
Ответ на: комментарий от PolarFox

Кодировкопроблемы могут опечалить пользователя.

А можно поподробнее? Если у меня похапэ снял строку с формы, то она вроде должна быть UTF-8? Разве она может меняться например от кодировки в системе посетителя?

valich ★★★
() автор топика

Кириллицу запрещают чтоб с кодировками не водиться наверно.

Спецсимволы требуют чтоб криптостойкость повысить, для перебора понадобится больший алфавит и следовательно намного больше времени. Ещё юзеры идиоты и если можно ввести простой пароль, они его введут, а простые пароли давно в радужных таблицах. А солить - это правильно.

Kalashnikov ★★★
()

Я на своих сайтиках ставлю ограничение на мин-макс количества символов в пароле. И разрешаю вводить всё что можно ввести с клавиатуры

Сделай лучше автогенерацию.

wxw ★★★★★
()

Жаль что анонимусы не могут постить в толкс =)

dada ★★★★★
()
Ответ на: комментарий от valich

Кодировкопроблемы могут опечалить пользователя.

А можно поподробнее? Если у меня похапэ снял строку с формы, то она вроде должна быть UTF-8? Разве она может меняться например от кодировки в системе посетителя?

С чего бы? Она может быть еще в CP1251 или KOI8-R.

Ну даже если не брать случай, когда у тебя виндовый сервер или какой-нибудь линуксовый, но не утфный (а таких встречается по хостингам еще как). Что делать, если тебе туда китайских иероглифов нафигачат, которых нету в UTF? Может до ошибок с БД довести и если на какой-нибудь таблице «комментарии к новостям» это не особо важно, то засветить злоумышленнику структуру users - уже существенно опаснее.

BaBL ★★★★★
()
Ответ на: комментарий от BaBL

Это да, если разрешать использовать для хостинга винду и прочие окаменелости, то...

Только счас подумал, что мелочь я обычно делал или на Wordpress или на Joomla. А свои поделия хостятся на vps или облаках, где сам себе хозяин. Там текущие версии всякого нужного софта.

В общем они это делают только из соображений обратной совместимости.

valich ★★★
() автор топика
Ответ на: комментарий от Kalashnikov

Спецсимволы требуют чтоб криптостойкость повысить

Спецсимволы требуют, чтобы заставить пользователей использовать пароли, которых точно нет в словаре. Перебор при этом упрощается, при одинаковой длинны паролях «неограниченых» всяко больше.

DonkeyHot ★★★★★
()
Ответ на: комментарий от wxw

Сделай лучше автогенерацию.

Зачем сказал? :) Теперь сижу думаю о целесообразности.

valich ★★★
() автор топика
Ответ на: комментарий от BaBL

>Что делать, если тебе туда китайских иероглифов нафигачат, которых нету в UTF?

Шо?

Deleted
()
Ответ на: комментарий от BaBL

Что делать, если тебе туда китайских иероглифов нафигачат, которых нету в UTF? Может до ошибок с БД довести

Кстати интересное наблюдение. Оказывается ZF не поддерживает китайский, корейский и японский. Например не будут работать валидаторы для web-форм. Причиной указано, что часть иероглифов в кодировке UTF-8 может быть представлена кодами двух символов.

А для пароля мне кажется это и не важно, хранить то все равно хэш.

valich ★★★
() автор топика
Ответ на: комментарий от PolarFox

со всем зоопарком браузеров пока ни разу не натыкался на такое.

exception13 ★★★★★
()

Лучше дать возможность пользователю нормально работать с сайтом без регистрации вообще. А то бывает приходится регится, а там ограничение на мин длинну и всякие спецсимволы, подтверждение через мыло и забористая капча - как будто затраченные усилия заставят меня вернутся на говносайт еще раз.

KillTheCat ★★★★★
()

Если меня требуют использовать спецсимволы, то мне придётся придумывать пароль, который я никогда раньше не использовал, а значит я его завтра забуду и не смогу войти на сайт.

Yareg ★★★
()
Ответ на: комментарий от valich

Я просто-таки обязан придумать мегаохренительный пароль для каждого ненужного сайтика, требующего регистрации, ага. Ведь злобные хацкеры просто обязательно украдут его хэш и злобно хихикая напишут из под моего пользователя в комментах слово «писька».

Yareg ★★★
()
Ответ на: комментарий от Yareg

Прошу прощения, видимо мой камент был принят лично. Никоим образом не хотел этого :)

Как минимум желательно придумывать разные пароли к каждому ненужному сайтику. А то местный Вася возьмет его и использует на всех ненужных сайтиках.

valich ★★★
() автор топика

многие горе-погромисты не умеют/не хотят делать БД в юникоде. Если же засунуть UTF-8 пароль в поле с 8-битной латиницей, а потом прочитать для сравнения - будет кака. И да, хеш для слабаков

nu11 ★★★★★
()

lastpass решает. и не надо помнить о паролях, вообще.

xtraeft ★★☆☆
()
Ответ на: комментарий от valich

Как минимум желательно придумывать разные пароли к каждому ненужному сайтику.

хм, но зачем? есть же генераторы

xtraeft ★★☆☆
()

В IT только латиница, запомни уже. За кириллические домены/ники/пароли/etc убивать надо.
Ну а про маленькие-большие буквы-цифры - это, конечно, банальная паранойя.

moscwich
()
Ответ на: комментарий от PolarFox

если передавать запросы в POST, то кодировка должна приходить одинаковая

stevejobs ★★★★☆
()
Ответ на: комментарий от valich

Причиной указано, что часть иероглифов в кодировке UTF-8 может быть представлена кодами двух символов.

какой мрак. Я за бан.

stevejobs ★★★★☆
()
Ответ на: комментарий от moscwich

За кириллические домены/ники/пароли/etc убивать надо.

Хм. Но почему такая нетерпимость к кириллическим никам (логинам)? У меня как раз задача их использовать...

valich ★★★
() автор топика
Ответ на: комментарий от PolarFox

Кодировкопроблемы могут опечалить пользователя.

Ещё больше он опечалится, если когда-то придётся логиниться с некириллизованной машины.

KRoN73 ★★★★★
()
Ответ на: комментарий от Eddy_Em

Потому что совместимости 0.0%.

Совместимости с чем? Уточни пожалуйста.
Со старыми версиями PHP, MySQL, etc? Чтобы можно было гибко подбирать хостинг? Или есть еще какие сакральные несовместимости?

valich ★★★
() автор топика
Ответ на: комментарий от valich

Совместимости с чем?

Решит кто-нибудь кодировку поменять - и кирдык вашей базе паролей. Плюс одну и ту же библиотеку нельзя будет использовать на разных компьютерах.

Пароли и имена пользователей должны состоять только из символов первой половины таблицы ASCII, иначе получим всякие косяки.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от valich

Как понять «кодировка в PHP», вобще то в PHP строки - последовательность байт. Другое дело что есть ф-ции с поддержкой UTF-8. Про «Что делать, если тебе туда китайских иероглифов нафигачат, которых нету в UTF?» - это LOL. Такого не может быть т.к. в любом случае что получит приложение - поток байт который в конце концов можно разложить по ASCII.

psp13
()
Ответ на: комментарий от valich

Автор, делай не бойся. Только не забывай всегда указывать кодировку на страницах с формами. Т.к. к примеру в UTF-8 и какой нить KOI8 один и тот же символ может быть представлен разными байтами. Проблема эта относится к client-side, с современными браузерами при установке правильной кодировки HTML документа проблем быть не должно.

psp13
()
Ответ на: комментарий от xpahos

не может. как он передаст строку по-другому?

Ну, применение Юникодка способно даже в современном софте устроить полет крокодилов. Иногда совершенно ВНЕЗАПНО софт не поддерживает символов выше BMP, или не проверяет codepoints, нет ли среди них недопустимых кодов. Или у пользователя могут быть проблемы: браузер может в этот пароль вставить контрольные символы какие-нибудь, или у пользователя на разных машинах строки, выглядящие внешне одинаково, могут записываться разными кодами (т.е. разными codepoints). Особенно если речь идет о языках программирования, в которых Юникод вообще прикручен сбоку.

Так что я бы не рисковал. Или хотя бы ограничился, скажем, кириллицей. Но даже если бы ограничился кириллицей, пришлось бы хорошо тестировать, в т.ч. не смогут ли пользователи намеренно вызвать техническую ошибку.

proud_anon ★★★★★
()

но не должно быть киррилических символов

Пережитки прошлого века.

Алсо вконтакте уже года два вроде как можно вводить кириллицу в качестве пароля.
В тч и китайские иероглифы.

Да и вообще с каждым годом всё больше и больше нормальных сайтов разрешают кириллицу. Главное что сайты не русские. Это больше всего радует.

А на русских сайтах это должно быть доступно по дефолту но у нас 80% разработчиков тупые копипастеры и ничего своего не способны запилить.

VictimOfLoveToLinux
()

какая вообще разница какие символы в пароле? причём тут кодировка бд?
он принимается php скриптом и кодируется в какой нибудь md5, и в базу он идёт в виде английских символов и цифр.
а пхп скрипту он будет передан в той кодировки в которой и вся страница.
мета теги указать достаточно.

так что с паролями абсолютно никаких проблем быть не должно, проблемы если и могут быть то с именем пользователя так как оно хранится как есть.
но для извращенцев/параноиков Base64 к вашим услугам.

TDrive ★★★★★
()
Ответ на: комментарий от TDrive

какая вообще разница какие символы в пароле?

В случае использования Unicode/UTF разница может быть существенной.

Например, в зависимости от способа нормализации строк буква ё может быть передана как D1 91 (классическая буква ё в один символ), так и как D0 B5 CC 88 (буква е плюс диакритика сверху). Для русского языка это может быть не сильно актуально (всего-то ё и й), а для всяких там деванагари очень даже.

sjinks ★★★
()
Ответ на: комментарий от sjinks

и какие последствия от этого?
-человек набирает пароль хоть с иероглифами
-пароль передаётся пхп скрипту в том же виде в котором его набрали
-пхп шифрует его в md5 и сохраняет в базе данных
при следующих логинах
-пользователь набирает пароль точно также как и в первый раз
-передает его скрипту в таком же виде как и первый раз
-пхп шифрует его в мд5 и получается хеш такой же как и в первый раз
-сравнивает его с хешем из бд

на каком этапе может возникнуть ошибка?

TDrive ★★★★★
()
Ответ на: комментарий от sjinks

Или буква й: в Windows это будет U+0419 (CYRILLIC CAPITAL LETTER SHORT I), а на Маке — U+0418 (CYRILLIC CAPITAL LETTER I) + COMBINING BREVE (U+0306).

sjinks ★★★
()
Ответ на: комментарий от TDrive

Если на одной и той же машине, в одном и том же браузере — без проблем. Если сегодня на Винде, завтра на Маке, послезавтра ещё где-нибудь — хэш может не сойтись (пример с буквой й на пост выше).

sjinks ★★★
()
Ответ на: комментарий от sjinks

Чтобы в PHP всё работало примерно одинаково, нужно все данные пропускать через Normalizer::normalize() и договориться о способе нормализации (например, если есть API для интеграции с другими сервисами).

А на практике я видел очень мало кода, использующего Normalizer::normalize() (то ли разработчики не знают, то ли им пофиг).

sjinks ★★★
()
Ответ на: комментарий от sjinks

разные браузеры или операционки могут по разному печатать букву ё? не ужели в UTF-8 нету каких то стандартов на такой случай?

в любом случае на работе скрипта это не отразится, а пользователь может воспользоваться функцией «восстановить пароль».
это конечно не айс но если частота возникновения проблемы мала то этим можно пренебречь.

TDrive ★★★★★
()
Ответ на: комментарий от KRoN73

KRoN73

Ещё больше он опечалится, если когда-то придётся логиниться с некириллизованной машины.


Это уже проблемы этого чудо-пользователя.

blackst0ne ★★★★★
()
Ответ на: комментарий от sjinks

А на практике я видел очень мало кода, использующего Normalizer::normalize() (то ли разработчики не знают, то ли им пофиг).

Вот спасибо! Уже имел дело с PECL Intl. Устанавливал на хостинг для MediaWiki. Надо потестить с именами (логинами), но еще проблема найти всякие экзотические системы и браузеры...

valich ★★★
() автор топика

Почему на некоторых сайтах при регистрации надо придумать пароль где ... не должно быть киррилических символов?

Потому что регулярка, которую они используют для валидации, эти символы не предусматривает. Никаких иных причин нет.

Wizard_ ★★★★★
()
Ответ на: комментарий от KRoN73

Пользователь сам должен думать о том, откуда ему придётся логиниться, в крайнем случае сможет восстановить пароль.
Считать пользователя криворуким быдлом это идеология майкрософт, так нельзя.

TDrive ★★★★★
()
Ответ на: комментарий от TDrive

Считать пользователя криворуким быдлом это идеология майкрософт

Это объективная реальность. 99.9% пользователей принадлежит именно к этой категории.

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

Согласен) но ограничивать пользователей в выборе, основываясь на этом, считаю не правильно.

TDrive ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.