Блог Игоря Шевченко

Неверное имя пользователя или пароль

Практически любой сайт, если попытаться авторизоваться с неверными данными, выдаст стандартное сообщение: «Неправильное имя пользователя или пароль». Если вы разрабатываете какой-то сайт, то скорее всего, он говорит то же. Считается, что такой расплывчатый текст усложняет работу хакерам, которые взламывают аккаунты на сайте. Взломщики будут тратить много времени на попытки подобрать пароль к пользователям, которые даже не зарегистрированы. Простым людям от этого менее удобно, но это обычный компромисс между удобством и безопасностью.

В реальности всё это работает не совсем так успешно. К примеру, недавно я забыл пароль от сервиса Grammarly. Изначально при входе я увидел типичную надпись.

Пошел восстанавливать пароль, там сообщение тоже расплывчатое: если вы зарегистрированы, то письмо отправлено, но если такого аккаунта нет, то ничего не отправлено.

Письма не всегда приходят быстро, поэтому я какое-то время подождал, но мне так ничего и не пришло. Потом нашел у себя в корзине маркетинговое письмо от Grammarly, определил по нему, на какую почту я зарегистрирован, и зашел.

Но если бы я был плохим парнем (или если бы хотел получать в два раза больше маркетинговых писем), то просто пошел бы на страницу регистрации. Когда вводишь там занятый почтовый адрес, сайт честно сообщает об этом.

Я ни разу не видел сайтов, на которых конспирация во время входа и восстановления пароля имела бы смысл. Хакеры могут просто подобрать логин на регистрации, а потом уже перебирать пароли. Так что никакого компромисса между удобством и безопасностью здесь нет, сайты затрудняют жизнь пользователям без какой-либо выгоды.

Если вы хотите сделать авторизацию на сайте безопаснее, есть более эффективные способы:

  1. Ограничивайте количество попыток ввода неправильного пароля, а потом показывайте капчу или блокируйте.
  2. Помогайте пользователю выбрать надежный пароль с помощью индикаторов сложности пароля.
  3. Добавьте двухфакторную аутентификацию.
  4. Зарегистрируйте логины-ханипоты (вроде admin@yoursite.com) и блокируйте тех, кто пытается в них войти.

И прямо говорите людям, если они ввели несуществующий логин. Когда Мейлчимп начал так делать, они собрали статистику и выяснили, что количество ошибок при авторизации упало втрое. Это очень хороший результат.

26 ноября 2017 11:55

Комментарии

Антон 7 декабря 2017 15:07

Вообще-то заставлять хакера проверять логины на форме регистрации - таки усложнение его работы. С точки зрения дешевизны не сообщать подробности ошибки - довольно выгодная защита.
Ограничение количества попыток, два фактора - куда более дорогие решения.

Nick 7 декабря 2017 18:39

Не очень понятен совет 4. Кого/что я должен блокировать?

Игорь Шевченко 7 декабря 2017 21:53

Антон, а в чем усложнение? В том, что хакеру придется потратить немного времени и дописать скрипт для работы с формой регистрации? Не очень надежно получается.

Игорь Шевченко 8 декабря 2017 00:31

Nick, схема такая:

1. Берете какие-нибудь очевидные имена (например, admin)
2. Регистрируете их у себя на сайте
3. Никогда сами ими не пользуетесь
4. Сразу безжалостно блокируете всех, кто пытается в них войти, потому что это явные злоумышленники.

Не знаю, насколько это эффективно, потому что сам ни разу так не делал, но советы подобные видел.

Оставить комментарий

Вы можете войти через Твитер или ВКонтакте