Безопасный сброс пароля без электронной почты

Как я могу реализовать функцию безопасного сброса пароля без отправки пользователю электронной почты? Есть еще один безопасный бит информации, который я храню, и только пользователь должен знать, но кажется небезопасным просто позволить пользователю обновить пароль только потому, что они знают 9-значный номер.

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

любой вход будет оцененный.

обновление:
Сделав попытку OpenID и вспомнив, что этот сервер не позволяет PHP (и, следовательно, cURL) делать какие-либо внешние запросы, я снова попытался отправить почту с PHP. По-видимому, все мои предыдущие ужасные опыты с mail () на этом сервере ушли.

Спасибо за Ваш вклад, я могу снова заглянуть в OpenID в будущем.

4 ответов


Punt по вопросу пароля. Переключитесь на OpenID. Вам не нужно беспокоиться о сбросе пароля, и пользователю нужен только новый пароль, если он нужен.

это беспроигрышно.


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

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

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


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

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

Я должен предупредить вас, что это не очень хороший метод защиты их паролем от несанкционированного доступа. Для хорошей статьи читайте:http://www.schneier.com/blog/archives/2005/02/the_curse_of_th.html


У вас нет способа узнать, кто пытается сбросить "Джо" пароль. Это может быть Джо, или кто-то, выдающий себя за Джо.

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

вызов телефона Джо с помощью звукового сообщения легко сhttp://www.twilio.com/ но кто-нибудь может поднять трубку офисного телефона Джо. Так что обычно вы хотели бы получить дополнительный вызов перед звонком. Например секретный вопрос/ответ. С помощью телефона и секрет q&a, вы сделали вещи жестче для плохих парней, но все еще выполнимы Джо.

еще одна идея-отправить сообщение сброса кому-то, кому Джо доверяет и кто знает Джо. (Отправить по электронной почте или по телефону / смс.) Вариант этого-отправить сотруднику, который знает Джо, например, его назначенный salesrep, HR rep и т. д.

используйте сообщение: отправить улитку письмо с кодом сброса в нем. Взял бы пару дней, чтобы добраться туда, но кража почты-федеральное преступление. См.http://www.postalmethods.com/ Если есть очень плохие возможные отрицательные результаты, это может быть хорошим решением.

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

другой шаблон-потребовать, чтобы Джо позвонил в службу поддержки и позволил человеку допросить его.

суть в том, что никакая техника не является совершенной. Смотрите историю Twitter breakin: http://www.technewsworld.com/story/67612.html?wlc=1247790901&wlc=1248238327

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