Недавно мы перешли на более качественную стратегию хранения паролей, в которую вошли все хорошие вещи:
- Пароли сохраняются после прохождения через bCrypt
- Пользователю отправляется ссылка на активацию при создании аккаунта для подтверждения владения адресом
- Забыли пароль без секретного вопроса, ссылка отправляется на их электронную почту.
- Срок действия ссылки истекает через 24 часа, после чего им нужно будет запросить новую.
- Если учетная запись создается нашими сотрудниками, отправляется электронное письмо со случайным надежным паролем. При входе в систему пользователь должен сбросить его на то, чего мы не знаем, и это bCrypt'd.
Теперь это соответствует «лучшей практике», но это значительно увеличило количество запросов на поддержку от обычных пользователей, которые не понимают всего этого, они просто хотят войти в систему.
Мы часто получаем запрос от пользователей, которые жалуются на:
- Неверный пароль (из того, который им нужно сбросить, они часто вставляют его с пробелом в конце). Они сообщают нам, что они используют, но мы не можем сказать им, каков их настоящий пароль.
- Сказать, что они не получают письмо, которое мы им отправляем (активация, сброс и т. Д.). Это часто не тот случай, после долгих поисков неисправностей мы обычно выясняем, что они опечатали в электронной почте, что они не проверяют правильную учетную запись электронной почты или просто попали в папку со спамом.
Мы, конечно, не можем попробовать это для них, поскольку у нас нет пароля. Мы регистрируем неудачные попытки, но мы также очищаем пароль, который они использовали, так как он, вероятно, будет паролем, используемым для другой учетной записи, и мы не хотим хранить его в виде простого текстового файла журнала. Это оставляет нам почти ничего, чтобы помочь им, когда они сообщают о проблемах.
Мне интересно, как большинство людей решают подобные проблемы?
источник
Ответы:
Исправлено путем включения ссылки с одноразовым идентификатором GUID, который регистрирует их и вынуждает их сбросить пароль. Не заставляйте пользователя копировать-вставлять. (Кроме того, почему бы не удалить пробелы в конце пароля в вашей форме.)
Убедитесь, что ваша исходящая электронная почта не спамится (возможно, настройте тестовые учетные записи в некоторых распространенных почтовых службах), запишите все, что происходит, и, возможно, сообщите об этом пользователю, если он попытается запросить новый сброс (например, отправьте письмо на johndoee @ gmail). .com не удалось, пользователь не найден, вы правильно написали?). Кроме того, будьте понятны пользователям о проблемах правописания и спама.
Кроме того, OpenID и другие сторонние авторизации также являются опцией, как уже говорили другие.
источник
Я бы сказал, использовать сторонние методы аутентификации, такие как Facebook, OpenID, Google ... все, что подходит для ваших пользователей. Однако, если ваши пользователи не могут вспомнить ваш пароль, возможно, они не смогут использовать стороннюю систему аутентификации ...
В зависимости от вашей ситуации вы можете использовать другую систему, такую как клиентские сертификаты SSL (их определенно сложно установить для конечных пользователей, но если это компания, и вы можете автоматизировать ее установку, это здорово), Windows SSO, мобильное приложение и т. д.
источник
Тебе даже нужно это делать? Первое, что вам нужно сделать, это определить, что вы защищаете и от кого вы защищаете это. Может быть, это просто не стоит затрат на лучшую практику, и, возможно, лучшая практика даже не остановит вашего злоумышленника.
Если вы против АНБ и хотите чего-то желать, сдавайтесь и сделайте жизнь своих пользователей проще. Если у вас есть номера кредитных карт, вам придется мириться с проблемами, которые требует требуемый уровень безопасности, потому что есть плохие парни, которые хотят их и будут тратить деньги и время на их получение. Это доступ к семейному фотоальбому, вам нужна вся эта безопасность.
Читайте о работах Бьюса Шайнерса («Секреты и ложь»), которые станут хорошим началом для понимания безопасности.
источник
Первое, что бросается в глаза, - это то, что ваши письма отправляются на нежелательную почту. Настройка электронной почты так, чтобы она была признана реальной, не является тривиальной. Я предлагаю вам разобраться, как предотвратить неправильную пометку электронной почты (отдельный вопрос по SO?)
Второе, что я бы порекомендовал, - это предоставить вашим пользователям веб-приложение / приложение, которое запускает электронные письма для восстановления пароля. Отказаться делать это любым другим способом, кроме электронной почты, это небезопасно и создает плохой прецедент.
источник
Тот факт, что они готовы позвонить вам и сообщить вам свой пароль вслух, говорит о том, что для этих пользователей пароль и информация, которую он защищает, не так уж важны. Я бы никогда не сделал ничего подобного с моим банковским паролем. Но есть ряд сайтов, которые требуют пароли для вещей, которые действительно не заслуживают их. У меня есть один стандартный пароль, который я использую для всех них, и чем больше «эй, это не надежный пароль» или «мы сделаем вам пароль и заставим вас регулярно его менять» и так далее, тем меньше я хочу использовать этот сервис. Я хотел бы коротко поговорить с людьми, представляющими бизнес-ценность в вашей жизни, чтобы понять, будет ли на самом деле лучше просто держать их в текстовом виде в БД и посылать их людям по запросу.
Если на самом деле это должно быть настолько безопасно, вы можете попробовать то, что один из моих клиентов сделал с системой, которую мы для них написали. Когда вы разговариваете по телефону с человеком, зайдите в базу данных и измените его адрес электронной почты на ваш. Затем зайдите в Интернет и нажмите Забыли пароль? Дождитесь адреса электронной почты и используйте его для входа. Используя веб-сайт, измените пароль на Пароль или что-то еще, что вы устно согласитесь с клиентом. Измените их адрес электронной почты обратно на свой собственный адрес и скажите им: «Все готово, ваш новый пароль активен сейчас!» Счастливый клиент, и вам не нужно объяснять им, что все происходит.
источник
последний метод, который я использовал в системе с очень неграмотными пользователями в прошлом, заключался в том, чтобы направить пользователя на экран, где ему дали номер телефона и номер подтверждения. Они позвонили по номеру телефона, подтвердили свою личность ручным способом, а затем прочитали подтверждение. сотрудник службы поддержки вошел в отдельную систему, ввел номер и получил второй номер, чтобы вернуть его клиенту. клиент использовал второй код, чтобы перейти на страницу сброса пароля. клиентская версия страницы не может запускаться из подсетей службы поддержки, а экран поддержки не может запускаться с клиентов.
это не пуленепробиваемый, так как специалист службы поддержки может использовать vpn для запуска обоих концов из одного места, но этого было достаточно для аудита, поскольку учетная запись службы поддержки была зарегистрирована как ответственная за действие
источник
Может быть, путем реализации правил безопасности, которые не являются безумными. Делая это, все, что вы получаете, это на самом деле меньше безопасности, потому что система настолько сложна в использовании, что ваши клиенты будут перехватывать пароли для вас и их друзей только для того, чтобы заставить ее работать!
Разве вы не можете просто отправить им нормальные ссылки, а затем пароль ниже. Если ссылка прервана почтовым клиентом, просто отобразите форму с одним полем «код активации» ... «введите код активации, указанный в электронном письме» ... 5 цифр, чтобы они не перепутали 0 с O и т. Д. 4 цифры подходят для кредитных карт, и вам нужна такая сложная политика для простого входа? Если код не работает, повторите проверку со строкой TRIMmed? Я думаю, это не сделает его менее безопасным, верно? :)
Для меня это тоже часто случается ... я дважды щелкаю по паролю и копирую пробел. Для меня невероятно, почему peple не может понять, как удалить конечные белые символы, если проверка не пройдена, и повторить процесс? Тогда, может быть, TOGGLE для меня, чтобы проверить, случайно ли я не нажал CL.
Вы слишком сильно это усложнили. Это не «сброс пароля» и «исходный пароль» ... но «Код подтверждения» и «Введите номер подтверждения, который мы отправим вам на электронную почту», «У вас нет электронной почты? Он был отправлен на xxx@yyy.com, проверьте Ваш спам еще не получен? Повторно отправьте подтверждение по электронной почте ". В теле HTML ссылка. http://xxx.com/conf-12345-mymail-gmail-com.html . Ни один почтовый клиент не сломает это.
источник