anton_tikhonov
@anton_tikhonov

Как исключить ввод кириллицы, спецсимволов и пробелов?

Есть ТЗ:
Валидация пароля.
Пароль может содержать только буквы латинского алфавита (любого регистра) и цифры. Не может содержать кириллицу, спецсимволы и пробелы.

Примеры:
QQwert12 - пройдёт валидацию
Кириллица123 - не пройдёт валидацию

Но проблема в том что qweFrty123 йцу # тоже пройдет валидацию

Какой должен быть паттерн/набор для выражения что полностью исключить кириллицу, спецсимволы и пробелы?
  • Вопрос задан
  • 149 просмотров
Решения вопроса 1
trapwalker
@trapwalker
Программист, энтузиаст
[a-zA-Z0-9]+
Но у вас плохие требования к паролю.
Они выдают непрофессионализм разработчиков, которые внедряют такие требования.
Это признак того, что пароль лежит в открытом (не хешированном) виде в БД.
Это провоцирует делать слабые пароли.
Это выглядит как поделка студентов.

Если и вводить ограничения, то минимальные:
- пароль должен быть не пустым. Всё.

Однако следует делать предупреждения если:
- пароль содержит кириллицу, или любые символы, которые сложно набрать на любой произвольной клавиатуре. Большая проблема пароль с юникод-символами, если вы хотите ввести его на смартфоне. Большая проблема с кириллицей, если вы хотите войти с компа в турции в отпуске, потеряв, к примеру, телефон.
- пароль слишком короткий;
- хеш пароля находится в списке наиболее распространённых паролей;
- пароль выглядит как набранный с инвертированным капс-локом.

Эти предупреждения должны быть заметны, но не должны запрещать создать такой пароль. Обсуждать можно только то, что касается списка самых распространённых паролей, скажем тысячи самых популярных. Ну и короткие (меньше 6 знаков).
Пароль следует хешировать с только что сгенерированной солью. Хранить соль нужно рядом с хешем. Также рядом можно указать название алгоритма хеширования. Прямо в одной строке. Это не снизит безопасность, зато избавит вас от проблем связанных с переходом на новые алгортимы хеширования.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@pavelsha
https://ru.stackoverflow.com/questions/761716/%D0%...

Вот уже лет двадцать такую задачу решают при помощи регулярных выражений.
Гуглится минут за пять
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы