Задать вопрос
anton_tikhonov
@anton_tikhonov

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

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

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

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

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

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

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

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

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

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

Похожие вопросы