Хеширование пароля и поддержка вашего пользователя

10

Недавно мы перешли на более качественную стратегию хранения паролей, в которую вошли все хорошие вещи:

  • Пароли сохраняются после прохождения через bCrypt
  • Пользователю отправляется ссылка на активацию при создании аккаунта для подтверждения владения адресом
  • Забыли пароль без секретного вопроса, ссылка отправляется на их электронную почту.
  • Срок действия ссылки истекает через 24 часа, после чего им нужно будет запросить новую.
  • Если учетная запись создается нашими сотрудниками, отправляется электронное письмо со случайным надежным паролем. При входе в систему пользователь должен сбросить его на то, чего мы не знаем, и это bCrypt'd.

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

Мы часто получаем запрос от пользователей, которые жалуются на:

  • Неверный пароль (из того, который им нужно сбросить, они часто вставляют его с пробелом в конце). Они сообщают нам, что они используют, но мы не можем сказать им, каков их настоящий пароль.
  • Сказать, что они не получают письмо, которое мы им отправляем (активация, сброс и т. Д.). Это часто не тот случай, после долгих поисков неисправностей мы обычно выясняем, что они опечатали в электронной почте, что они не проверяют правильную учетную запись электронной почты или просто попали в папку со спамом.

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

Мне интересно, как большинство людей решают подобные проблемы?

jfrobishow
источник
2
Кроме того, что я немного более описателен в электронных письмах, которые ваша система отправляет пользователям, я не вижу, что вы могли бы сделать иначе, сохраняя при этом лучшие практики. Заставляет вас хотеть, чтобы вы могли просто ударить глупых пользователей.
Бернард
1
Люди тупые, ваши пользователи, больше, чем большинство других, я не вижу здесь вопроса?
8
Джаррод, ты просто оскорбляешь своих пользователей. Единственная глупость - это ты. Вы не понимаете уровень компьютерной грамотности ваших пользователей. Не обижайся, парень, но ты пишешь программное обеспечение для людей, а не для компьютерных фанатов. Если вы не видите никаких вопросов, возможно, это означает, что всех этих юзабилити-экспертов можно уволить, потому что они на самом деле не нужны. Это просто проблема с «глупыми людьми», поэтому мы - умные разработчики, просто запретим им доступ в сеть, и проблема исчезнет :) Если кто-то написал систему, которую может использовать только автор, вы не видите проблемы?
Slawek
2
@Slawek: нет, действительно, люди глупы.
Брайан Бетчер
@JarrodRoberson, вряд ли его пользователи - когда имеешь дело с общедоступными веб-приложениями, это обычно то, что ты получаешь. Тем не менее, нравится это или нет , он все еще требует ресурсов поддержки, и это очень актуальный вопрос.
GrandmasterB

Ответы:

7

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

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

Сказать, что они не получают письмо, которое мы им отправляем (активация, сброс и т. Д.). Это часто не тот случай, после долгих поисков неисправностей мы обычно выясняем, что они опечатали в электронной почте, что они не проверяют правильную учетную запись электронной почты или просто попали в папку со спамом.

Убедитесь, что ваша исходящая электронная почта не спамится (возможно, настройте тестовые учетные записи в некоторых распространенных почтовых службах), запишите все, что происходит, и, возможно, сообщите об этом пользователю, если он попытается запросить новый сброс (например, отправьте письмо на johndoee @ gmail). .com не удалось, пользователь не найден, вы правильно написали?). Кроме того, будьте понятны пользователям о проблемах правописания и спама.

Кроме того, OpenID и другие сторонние авторизации также являются опцией, как уже говорили другие.

Маке
источник
некоторые люди ставят пробелы в своих паролях?
Soandos
Некоторые люди вставляют автоматически сгенерированные пароли и включают пробелы в начале и / или конце случайно. (Прочтите вопрос.)
Маке
3

Я бы сказал, использовать сторонние методы аутентификации, такие как Facebook, OpenID, Google ... все, что подходит для ваших пользователей. Однако, если ваши пользователи не могут вспомнить ваш пароль, возможно, они не смогут использовать стороннюю систему аутентификации ...

В зависимости от вашей ситуации вы можете использовать другую систему, такую ​​как клиентские сертификаты SSL (их определенно сложно установить для конечных пользователей, но если это компания, и вы можете автоматизировать ее установку, это здорово), Windows SSO, мобильное приложение и т. д.

Алекс
источник
Клиентские сертификаты - отличная идея. Они небезопасны и являются кошмаром для удаленного исправления, если что-то пойдет не так. Openid - хорошая идея, хотя
Том Сквайрс
Как сертификаты небезопасны?
Бернард
@bernard любой, кто находится на этом ПК, имеет сертификат. Его также довольно легко вывести на улицу с вирусом
Том Сквайр
1
Я согласен, что они безопасны настолько же, насколько и машина, на которой они находятся, но это совсем другая проблема.
Бернард
3

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

Если вы против АНБ и хотите чего-то желать, сдавайтесь и сделайте жизнь своих пользователей проще. Если у вас есть номера кредитных карт, вам придется мириться с проблемами, которые требует требуемый уровень безопасности, потому что есть плохие парни, которые хотят их и будут тратить деньги и время на их получение. Это доступ к семейному фотоальбому, вам нужна вся эта безопасность.

Читайте о работах Бьюса Шайнерса («Секреты и ложь»), которые станут хорошим началом для понимания безопасности.

mattnz
источник
3

Первое, что бросается в глаза, - это то, что ваши письма отправляются на нежелательную почту. Настройка электронной почты так, чтобы она была признана реальной, не является тривиальной. Я предлагаю вам разобраться, как предотвратить неправильную пометку электронной почты (отдельный вопрос по SO?)

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

Том Сквайрс
источник
Не то, чтобы электронная почта была особенно безопасным способом передачи конфиденциальной информации. Если бы только обычные пользователи могли быть обеспокоены GPG и ключами ssh ...
tdammers
@tdammers Я согласен, это не так безопасно. Однако это стало краеугольным камнем вашей онлайн-идентичности (к лучшему или к худшему). В настоящее время нет лучшей жизнеспособной альтернативы.
Том Сквайрс
Да, есть. Зашифрованная электронная почта. Я использую его все время, и меня раздражает, что даже огромные корпорации не заботятся о том, чтобы предлагать шифрование с использованием открытого ключа для конфиденциальной электронной почты. Это даже не сложно реализовать. Я нахожу странным, что существуют законы (по крайней мере, здесь, в Нидерландах), которые делают SSL обязательным для конфиденциальной информации, но в то же время отправка той же информации через простой SMTP считается приемлемой.
tdammers
@tdammers Я не знаю достаточно об этом, чтобы рекомендовать это непосредственно. Хотя это стоит того, чтобы посмотреть в OP
Tom Squires
2

Тот факт, что они готовы позвонить вам и сообщить вам свой пароль вслух, говорит о том, что для этих пользователей пароль и информация, которую он защищает, не так уж важны. Я бы никогда не сделал ничего подобного с моим банковским паролем. Но есть ряд сайтов, которые требуют пароли для вещей, которые действительно не заслуживают их. У меня есть один стандартный пароль, который я использую для всех них, и чем больше «эй, это не надежный пароль» или «мы сделаем вам пароль и заставим вас регулярно его менять» и так далее, тем меньше я хочу использовать этот сервис. Я хотел бы коротко поговорить с людьми, представляющими бизнес-ценность в вашей жизни, чтобы понять, будет ли на самом деле лучше просто держать их в текстовом виде в БД и посылать их людям по запросу.

Если на самом деле это должно быть настолько безопасно, вы можете попробовать то, что один из моих клиентов сделал с системой, которую мы для них написали. Когда вы разговариваете по телефону с человеком, зайдите в базу данных и измените его адрес электронной почты на ваш. Затем зайдите в Интернет и нажмите Забыли пароль? Дождитесь адреса электронной почты и используйте его для входа. Используя веб-сайт, измените пароль на Пароль или что-то еще, что вы устно согласитесь с клиентом. Измените их адрес электронной почты обратно на свой собственный адрес и скажите им: «Все готово, ваш новый пароль активен сейчас!» Счастливый клиент, и вам не нужно объяснять им, что все происходит.

Кейт Грегори
источник
2
Прямое изменение базы данных само по себе является брешей в безопасности. Это означает, что вы можете выдавать себя за любого пользователя, использующего вашу систему.
Бернард
3
У моих клиентов было приложение для Windows, с помощью которого они могли редактировать любое поле для любого пользователя, например, если они получили факс о том, что у них теперь есть новый номер телефона. Конечно это было проверено. Конечно, когда я увидел эту письменную процедуру, приклеенную к стене рядом со службой поддержки, я НЕ был СЧАСТЛИВ. Но я пришел, чтобы принять это, и есть контрольный журнал, показывающий, что случилось, если кто-нибудь когда-либо позвонит и пожалуется, что его пароль был сброшен без их согласия. Дело в том, что не все должно быть таким безопасным. И пользователи говорят вам, что это не должно быть.
Кейт Грегори
1
К сожалению, большинство пользователей не знают ничего лучшего. Разработчики программных приложений должны применять лучшие практики.
Бернард
4
Я согласен, что это большая дыра в безопасности. И я согласен, что это может быть наиболее подходящим решением. Однако службе поддержки клиентов кажется невероятно глупым временно менять адрес электронной почты клиента для сброса пароля этого пользователя: если вы хотите, чтобы служба поддержки клиентов сбрасывала пароли, просто позвольте им сделать это напрямую.
Джон Варфоломей
4
Я хотел бы также отметить , что выявление простых текстовых паролей , которые пользователи установили (на самом деле, хранение паролей в обычный текст на всех), на мой взгляд, чрезвычайно хуже , чем дать поддержку клиентов возможность напрямую изменить пароли пользователей.
Джон Варфоломей
2

последний метод, который я использовал в системе с очень неграмотными пользователями в прошлом, заключался в том, чтобы направить пользователя на экран, где ему дали номер телефона и номер подтверждения. Они позвонили по номеру телефона, подтвердили свою личность ручным способом, а затем прочитали подтверждение. сотрудник службы поддержки вошел в отдельную систему, ввел номер и получил второй номер, чтобы вернуть его клиенту. клиент использовал второй код, чтобы перейти на страницу сброса пароля. клиентская версия страницы не может запускаться из подсетей службы поддержки, а экран поддержки не может запускаться с клиентов.

это не пуленепробиваемый, так как специалист службы поддержки может использовать vpn для запуска обоих концов из одного места, но этого было достаточно для аудита, поскольку учетная запись службы поддержки была зарегистрирована как ответственная за действие

Билл
источник
-5

Может быть, путем реализации правил безопасности, которые не являются безумными. Делая это, все, что вы получаете, это на самом деле меньше безопасности, потому что система настолько сложна в использовании, что ваши клиенты будут перехватывать пароли для вас и их друзей только для того, чтобы заставить ее работать!

Разве вы не можете просто отправить им нормальные ссылки, а затем пароль ниже. Если ссылка прервана почтовым клиентом, просто отобразите форму с одним полем «код активации» ... «введите код активации, указанный в электронном письме» ... 5 цифр, чтобы они не перепутали 0 с O и т. Д. 4 цифры подходят для кредитных карт, и вам нужна такая сложная политика для простого входа? Если код не работает, повторите проверку со строкой TRIMmed? Я думаю, это не сделает его менее безопасным, верно? :)

Для меня это тоже часто случается ... я дважды щелкаю по паролю и копирую пробел. Для меня невероятно, почему peple не может понять, как удалить конечные белые символы, если проверка не пройдена, и повторить процесс? Тогда, может быть, TOGGLE для меня, чтобы проверить, случайно ли я не нажал CL.

Вы слишком сильно это усложнили. Это не «сброс пароля» и «исходный пароль» ... но «Код подтверждения» и «Введите номер подтверждения, который мы отправим вам на электронную почту», «У вас нет электронной почты? Он был отправлен на xxx@yyy.com, проверьте Ваш спам еще не получен? Повторно отправьте подтверждение по электронной почте ". В теле HTML ссылка. http://xxx.com/conf-12345-mymail-gmail-com.html . Ни один почтовый клиент не сломает это.

Slawek
источник
5
Упомянутая им политика безопасности не только не «БЕЗУМНА», но должна быть обязательной для всех приложений «SANE». Подобные ссылки, отправленные по электронной почте, должны истечь через некоторое время, чтобы предотвратить сброс пароля (либо из-за кражи ссылки напрямую, либо из-за спотыкания по ней с помощью компьютерного алгоритма). Пароли, вероятно, должны быть обрезаны перед проверкой. Пользователи глупы. Это закон. Ответ не в том, чтобы уменьшить наши меры безопасности, а в том, чтобы предпринять активные шаги, чтобы помочь нашим пользователям понять правильные процедуры.
Далин Сейврайт
7
-1. Это нормальный способ сделать это, что большинство сайтов используют. Если я выдаю «забытый пароль» на сайте и получаю электронное письмо с паролем в виде простого текста, я закрываю свою учетную запись.
Мэтт Гранде