Мнение: «Правила для паролей бесполезны, никогда не используйте их в своих проектах»
15К открытий15К показов
Правила для паролей и валидация паролей в целом — полный отстой, они сделают безопасность вашего проекта только хуже. Скорее всего, на выходе вы получите что-то вроде такого:
- «Мой Безопасный Пароль» ←Извините, пробелы запрещены;
- «МойБезопасныйПароль» ← Извините, пароль должен содержать цифру;
- “МойБезопасныйПароль1«← Извините, пароль должен содержать спец. символ;
- «МойБезопасныйПароль%1» ← Извините, символ «%» запрещен;
- «МойБезопасныйПароль_1» ← Извините, пароль должен быть короче 16 символов;
- «Задница» ← Извините, пароль должен быть длиннее 7 символов;
- «Идите_в_задницу» ← Пароль не должен содержать оскорбления;
- «Пароль_1» ← Пароль принят.
Придумывая глупые правила для паролей, вроде обязательного наличия 1 специального символа или цифры, вы усложняете жизнь не потенциальному взломщику, а пользователю — запомнить пароль с несколькими спец. символами намного сложнее, а вот компьютеру всё равно, какие символы перебирать, он будет делать это так же быстро.
Именно это отлично иллюстрирует классический комикс XKCD:
В сегодняшнем мире облачных вычислений и сверхбыстрых процессоров пароль длиной 8 символов (даже спец. символов!) — это всё равно, что отсутствие пароля вовсе. Истина в том, что одна из вещей, которые на самом деле имеют значение — это длина.
Но не только длина, потому что… ну, вы встречали когда-нибудь реальных юзеров? Это люди, которые делают бесполезной любую защиту. Так что приготовьтесь к тому, что, если даже пароли будут длинными, они будут небезопасными:
Скорее всего, в первую очередь хакеры попробуют брутить по базе самых популярных паролей: как известно, примерно 30% пользователей используют на своих аккаунтах один из паролей из базы и 1,6% — пароль из первой десятки самых популярных.
Поэтому следующим правилом будет: ищите введенный пользователем пароль в базах, и в случае его обнаружения там, просите придумать новый.
Кстати, эти базы популярных паролей позволяют сделать интересные выводы и о длине:
Заметим, что только 5 из 25 популярнейших паролей состоят из 10 символов, так что если мы разрешим ставить пароли длиной от 10 символов, то уже снизим степень подверженности бруту по базе на 80%.
На этом можем сделать вывод, что 10 — та самая оптимальная минимальная длина пароля для ваших пользователей. Если это модератор или администратор, взлом профиля которого нанесет больший ущерб, то длину пароля стоит сделать не меньше 15 символов.
Третье правило: не забывайте о Unicode. Дело в том, что реальная длина пароля может не совпадать с количеством символов, например, если это эмодзи или китайский язык. Как насчет этого пароля из четырёх символов?
✅???️
Его реальная длина — 8. Потому что:
Пароль из шести иероглифов или смайликов намного безопаснее, чем из 6 обычных символов, даже если он содержит большую букву, цифру и нижнее подчеркивание.
Всё, что от вас нужно — это обеспечить, чтобы в поле ввода пароля можно было ввести практически любой Unicode-символ.
Конечно, иногда правила для паролей бывают не такими уж и бесполезными, но в основном таких случаев только 3:
- Не разрешайте использовать пароль, совпадающий с логином;
- Не разрешайте использовать пароль, совпадающий с e-mail;
- Не разрешайте использовать пароль, совпадающий с адресом сайта.
В остальном правила для паролей — это полный bullshit. Учитывайте длину.
15К открытий15К показов