Мне чаще всего попадаются нелепейшие условия для пароля. На некоторых сайтах в пароле требуется хотя бы одна и цифра и один из символов, не относящихся к буквам и цифрам, на других сайтах — подобные символы запрещены; в отдельных случаях — встречался с запретом на русские буквы, хотя худшее что видел — низкое (8-12) ограничение по максимальной длине пароля.
Да обычно проверки-то неплохие, неглупые, в том числе условия для пароля. Только на мой взгляд, гораздо лучше те же условия делать рекомендациями, а не жёсткими ограничениями. Предупредили? Предупредили. Не послушался — сам себе злобный буратино.
Ну хочу я иногда пароль 123 или вообще пустой — потому что я ставлю себе систему для тестов, например. Мне в лом каждый раз набирать длинный правильный пароль с удержанием шифтов, левого и правого по очереди, со скачками между буквами и цифрами. Обычно я так и делаю, но всегда-то зачем? Мне лучше знать, когда я могу позволить себе откровенно слабый пароль. А чрезмерная забота автоматики, которая считает себя самой умной — раздражает неимоверно в таких случаях.
Ограничение на максимальную длину пароля тоже встречал, но только в виде предупреждения. Типа «вы набирайте, сколько хотите, но учтите, что в зачёт идут только первые N символов». Плохо, конечно, но лучше, чем если бы тупо запрещался ввод лишних символов.
По секрету скажу. В конце первого курса (ИТМО) мы делали курсач: php, oracle, html, css. Я делал примитивную систему документооборота, большая часть — электронные магазины, кто-то — системы управления сотрудниками (увольнение, выдача зарплат, и т.п.). Так вот почти у всех длина пароля была ограничена 30 символами. Просто потому, что это было очень привычное значение для ограничения длины поля :)
Всё, что Вы перечислили — это ошибки разработчиков. В первом и третьем случаях, скорее всего, применено некорректное регулярное выражение (для проверки e-mail их написано превеликое множество, одно другого «страшнее»). Второй случай точнее подпадает под определение «хотелось как лучше — получилось как всегда», но и это, по сути, ошибка проектирования пользовательского интерфейса.
Мало того, что все доступные регулярки просто убогие, так и правильной не найти.
Вот мой вариант: /^[a-z\d][a-z\d_\-\.+]*@(?:[a-z\d][a-z\d\-_]*\.)+[a-z]{2,6}$/i
иногда, правда, я забывал про однобуквенные слова… и за доменами первого уровня никогда не угонишься, может проще [a-z]{2,} использовать.
Правильно — по RFC 2822 «Internet Message Format», там по цепочке определений «local-part → dot-atom → dot-atom-text → atext» приходим к тому, что в части адреса до @ можно использовать и такие символы, как !,#, $, %, &, ', *, +, -, /, =, ?, ^, _, `, {, |, }, ~.
Так-то!
проблема авторов исключительно в любви к велосипедостроению.
когда используется готовое проверенное решение, таких проблем быть не может. главное прочесть документацию ДО написания.
к сожалению велосипеды и документация не дружат :)
ох, а сколько людей вводят www. перед е-мейлом… и непонятно, то ли он так зарегал, то ли считает, что перед всеми адресами надо вводить вэвэвэ.
похоже, пора уже почтовым системам поддерживать такие алиасы на автомате :)
Я даже не буду писать, что я зануда. И прощения за оффтоп просить тоже не буду.
В данном конкретном случае НЕ_ПРАВИЛЬНЫЕ пишется слитно.
Противопоставление с союзом А есть, и Вы правильно его заметили, написав НЕ_ЖЕСТКИЕ раздельно(хотя всё-таки Ё нужно использовать), но это правило описывает правописание с НЕ до союза, а не после.
На не гиковских сайтов подобная забота о пользователе всегда оправдана. Отсосёт один гик, зато десяток обычных пользователей смогут воспользоваться функцией и в результате принесут деньги проекту. А недопуск некоторых спецсимволов в адресе почты — это, конечно, ошибка.
У меня такого мыла нет, но разные бывают ситуации.
К примеру, сайт переехал на другой хостинг, а ДНСы ещё не заработали или если провайдер выделил статический IP, то вполне можно настроить локально почтовый сервер и получать почту непосредственно на свою машину — привызывать доменное имя к локальному компьютеру особого смысла нет.
(Не забудьте там нажать «[expand full text]», чтобы прочесть полный текст.)
Для не знающих английского языка переведу.
Сперва выпрыгивает сообщение: ваш пароль должен быть длиной не больше 0, содержать не меньше 109 алфавитных символов, не меньше 68 цифр, не меньше 101 специального символа.
Когда пользователь наконец извратился и придумал и ввёл соответствующий пароль, ему выпрыгивает ошибка: пароль не может быть длиннее 256 символов.
как же она мучается по жизни.
любая ситуация, где надо указать фамилию, ставит в ступор окружающих.
сменила бы она ее на «иванова», и никто бы не замечал ее фамилию.
Аналогично. У меня в названии улицы есть дефис — на сайте провайдера не могу оставить заявку на подключение.
Домен моей электропочты оканчивается на .net.ru — его тоже некоторые системы отшивают.
Кстати, насчёт адресов. Говорят, есть какой-то официальный справочник всех почтовых адресов, с описанием системы именования. 99% всех адресов легко можно описать с помощью системы «область — город — улица — дом — корпус — квартира». Но оставшийся один процент тааакой разнообразный, начиная с в/ч и заканчивая научными станциями…
ООО наболело. однажды я не мог зайти на один сайт, так как разработчики автоматом удаляли "-" (тирэ) из пароля при регистрации, и не уведомляли об этом пользователя.
Нельзя использовать эту регулярку в веб-проектах. Там например очень большой диапазон допустимых символов, допустимы одноуровневые домены и т.п.
Просто такие призывы иногда воспринимаются серьёзно ;)
а вот я не могу ее использовать.
потому как, я хочу понимать, что я использую.
а чтобы эту регулярку понять, надо потратить несколько часов в пустую, и потом всеравно напишешь свою на 2 порядка короче и понятней.
Чаще всего сталкиваюсь с двумя типами ограничений:
1. Нельзя использовать логин короче Х символов (например, в гугле, нельзя испольовать логин короче 6-и символов). Приходится извращаться со своим ником.
2. Нельзя использовать спец.символы в пароле (вообще жутчайшая глупость).
Да на каждом втором корейском сайте длина имени не может превышать 8 символов: в Корее не бывает имен длиннее 4 слогов, а каждый слог кодируется двумя латинскими символами.
Естественно подумать о том, что есть страны где имена могут быть длиннее им не приходит в голову :)
Ага, а когда многие службы не дают зарегиться, если мыло на бесплатном ящике? Хорошо еще что мало какой из таких сайтов знает про все 5 алиасов почты яндекса.
Вчера столкнулся с хаброглупостью — залогинился, мне выдало «смените пароль», причем мне пришлось опять вводить только что введеный пароль от хабра. Ну, поменял пароль, потом поменял еще раз и вернул старый (ну удобно мне так). Что за принуждение юзеров?
Когда требуют обязательно цифры использовать — тоже не понимаю…
кстати это позволяет несколько раз зарегистрироваться на сервисе, который говорит «на такой email уже зарегистрирован аккаунт», а вам не хочется делать еще одно липовое мыло для регистрации.
Вся фигня со спецсимволами заключается в боязне программеров sql-иньекций.
А правильно экранировать выражение — надо мозг применять, а не шаблон.
Такое вот имхо.
Вообще-то проблема SQL-инъекций решена лет 20 назад использованием prepared statements-подобного синтаксиса для запросов (или всяких active record'ов).
Возможно я неправ. Но обилие разного рода статей и гайдов показывает что противоинъекционная тема все еще актуальна.
Более того, большинство статей по теме, что я видел, как раз рекомендовали все подозрительные символы фильтровать, что и вызвало негодование аффтара.
А мы говорим о проверке вводимых данных с точки зрения валидации данных, или с точки зрения бизнесс правилах приложения?
Например, отклонение ввода слишком простых паролей — это требование уровня бизнесс правил, конкрентнее — правил безопасности принятых в системе.
А вот отклонение ввода слишком длинных имен — это требование продиктованное технической реализацией. Например в базе данных под некое поле отведено всего N байт.
И говоря о проверке данных, я бы сказал, что она должна быть настолько жесткой, чтобы обеспечивать уверенность в том, что в дальнейшем мы имеем дело с проверенными данными по определенным параметрам — размер, формат, другие характеристики.
Говоря проще, если я делаю поле в базе 20 байт, я проверяю что данные пришли не больше. Если я добавляю в дальнейшем код, который делает разбор или анализ сожержимого, я добавляю проверку во входной точке, что данные соотвествуют моим предположениям.
Если ты делаешь поле в 20 байт, ты должен быть уверен что ни один разумный человек(не злоумышленник) не будет пытаться ввести туда значение большего размера.
Я так понимаю имелось в виду то, что поле 20 байт не потому что тебе цифра 20 нравится, а потому что для этого поля это логически обоснованный размер и пользователю, у которого нет цели ломать твою систему, даже в голову не придет вбивать туда что-то более длинное. Чисто технически твои проверки будут работать правильно, но сейчас речь не о проверках, а о юзабилити.
Я недавно пытался через GMail отправить письмо на адрес: info@кирилический-домен.com, так там вылезло сообщение о недопустимых символах, пришлось в Firefox переходить по доменному имени, чтобы преобразовать в формат вида info@xn--….com.
Да! Да!
Вообще, есть мнение, что формы суть необходимое зло. Пользователь вынужден заполнять одни и те же нелепые поля от сайту из-за отсутствия подходящих технологий.
Любое усложнение жизни пользователя — это очень плохо. Конечно, иногда это необходимо, но зачастую любые ограничения являются следствием несовершенства технологии.
QIWI(исправьте а?) тоже с этой темой перемудрили, не помню толком уже зачем, но
требовалось установить пароль, причём в форме ввода стоял какой-то мега «датчик» определения уровня надёжности, который должен быть зелёным(кстати у меня проблемы с различением цветов и зелёный было очень проблематично разглядеть)
так вот, найти компромисс между лаконичностью и чёртовым датчиком казалось безумно трудно, достаточно сложные пароли не проходили, как выяснилось система уделяла большое внимание длине пароля
и что вы думаете? — Мой номер телефона, который является по сути логином, отлично подошёл как пароль.
Большинство паролей уводят по вине самого пользователя(вводит не там где надо, открыто хранит) так что сложность пароля тут только вредит.
Общался тут недавно с владельцем местного турагенства, выяснилось, что многие системы он-лайн бронирования туров так устроены что они автоматически выдают пользователю логин и пароль, причём логин это первые 6 символов названия турфирмы а пароль по рандуму. Такую же систему он просил и для себя, мол так все делают и всем это очень удобно.
— Так почему бы не дать возможность пользователям самим задавать пароли?
— да неет, что они там, какую-нибудь ерунду введут, а патом будут жаловаться на нас если их поломают, а так смотри,
* заходит в папку на «пароли» рабочем столе с кучей документов по названию сайтов, открывает один из них в котором красуется 9ти значная билеберда
— такой пароль уж точно фиг подберёшь! )))
Сложный пароль к сожалению приходится где-то записывать из-за сложности запоминания, а при таком способе хранения он его надёжность значительно понижается.
Категорически поддерживаю! Сам неоднократно спорил до хрипоты со своими коллегами: лучше с риском бардака дать больше свободы пользователю, чем бесить его глупыми ограничениями стандартизации!
Раздражают сервисы, где в имени пользователя не допускается точка (нельзя сделать имя.фамилия). А ещё есть такие (например регистрация ноута в Toshiba) где в названии фирмы нельзя использовать точки (при том, что в моей стране в названии любой фирмы всегда содержится не менее двух точек.)
Не делайте проверки слишком жесткими