Беру задачи на защиту формы регистрации от слабых паролей — и делаю это не общей галочкой «пароль должен содержать цифру», а отдельным виджетом, который считает реальную стойкость введённой комбинации. Первым делом проверяю пароль по базе известных утечек: запрос строится по схеме k-анонимности, наружу уходит только обрезок хеша, а сам пароль в незашифрованном виде не покидает браузер и нигде не сохраняется — так можно блокировать регистрацию с паролем вроде «qwerty123», который уже тысячи раз встречался в слитых базах.
Пока человек печатает, шкала силы пароля обновляется на каждое нажатие клавиши — считаю энтропию строки, отдельно ловлю клавиатурные раскладки, повторы символов и замену букв похожими цифрами, поэтому длинный, но предсказуемый пароль честно получает низкую оценку. Под шкалой выводится короткая подсказка, что именно улучшить — например, разбить повтор или добавить символ, — но сами введённые символы нигде не отображаются и не логируются: ни в консоли браузера, ни на сервере, ни в подсказке для скринридера.
Готовый виджет ставлю поверх существующей формы без переделки бэкенда: подключается к вашей вёрстке и валидации, весит немного и не ломает отправку формы, если JavaScript у посетителя выключен. По желанию настраиваю пороги строгости отдельно под форму регистрации заказчика и форму регистрации исполнителя.
В работу входит:
— проверка пароля по базе утечек методом k-анонимности
— живой индикатор силы с посимвольным пересчётом
— подсказки по улучшению без показа введённых символов
— поддержка скринридеров и навигации с клавиатуры
Пока человек печатает, шкала силы пароля обновляется на каждое нажатие клавиши — считаю энтропию строки, отдельно ловлю клавиатурные раскладки, повторы символов и замену букв похожими цифрами, поэтому длинный, но предсказуемый пароль честно получает низкую оценку. Под шкалой выводится короткая подсказка, что именно улучшить — например, разбить повтор или добавить символ, — но сами введённые символы нигде не отображаются и не логируются: ни в консоли браузера, ни на сервере, ни в подсказке для скринридера.
Готовый виджет ставлю поверх существующей формы без переделки бэкенда: подключается к вашей вёрстке и валидации, весит немного и не ломает отправку формы, если JavaScript у посетителя выключен. По желанию настраиваю пороги строгости отдельно под форму регистрации заказчика и форму регистрации исполнителя.
В работу входит:
— проверка пароля по базе утечек методом k-анонимности
— живой индикатор силы с посимвольным пересчётом
— подсказки по улучшению без показа введённых символов
— поддержка скринридеров и навигации с клавиатуры