Пост написан пользователем iTRON и рассказывает про WordPress плагин под названием Safety Passwords.
Проблематика паролей
Когда ваш WordPress проект подразумевает более одного пользователя, а вы осознаёте, что одного доброго слова недостаточно, чтобы убедить остальных юзеров применять в меру сложные пароли (и тем более менять их каждые икс дней) — это повод заставить их сделать это с помощью доброго слова и кольта какого-то плагина.
Я думал, что найду такой плагин достаточно быстро. И действительно, их оказалось полторы дюжины.
Нюанс в том, что все они — а) перегружены; б) либо платные; в) либо не подходят для использования в режиме дурака.
В моем случае третий пункт оказался критическим. Проект подразумевает администраторские права у нескольких пользователей, оценка уровня адекватности которых не входит в стратегию назначения ролей. Это вообще довольно общая история, и на этот случай даже существует пресловутый закон Мерфи, который в нашем контексте звучит как «если админы имеют красную кнопку «Сделать дичь», неизбежно один из них её обязательно нажмёт».
Это красной кнопкой в нашем случае стала возможность изменить настройки безопасности паролей через дашборду. Все эти плагины позволяли просто зайти и понизить уровень безопасности. И если сам плагин я ещё могу использовать в неотключаемом режиме must use, то вот его настройки я никак не мог заблокировать от изменений кем-то из админов.
А вот что для меня стало полной неожиданностью — большинство (если не все) плагинов зачем-то создают свою собственную форму смены пароля, а некоторые даже кастомную форму авторизации.
И это при том, что алгоритм входа — один из самых богатых на хуки и фильтры во всём WordPress. И это значит, что все они просто вырезаются в случае кастомных форм.
Каким должен быть плагин для паролей
В конечном итоге, я решил написать еще один плагин безопасных паролей, который должен отвечать следующим критериям.
- Простота — единственное предназначение плагина это обеспечивать безопасные пароли.
- Неотключаемость — настройки могут быть выставлены в PHP константах, что означает невозможность их изменения в админке.
- Базовая логика безопасных паролей — настраиваемая минимальная длина, обязательные спецсимволы, периодическая обязательная смена пароля, блокировка повторного использования старых паролей.
Что получилось
В итоге плагин действительно получился ненавязчивым: минимум настроек, аккуратные нотисы о скорой дате смены пароля.




Код плагина Safety Passwords доступен на Github.
Надёжных вам паролей и да не одолеет вас брутфорс!