Автоматический вход в систему с электронной почты клиента
Я подумывал о создании функции автоматического входа в систему для расширения, над которым я работаю, где клиент, который нажмет ссылку в электронном письме, автоматически войдет в свою учетную запись.
Это было бы действительно полезно, особенно при отправке старым клиентам, потому что им потребуется большое изменение, чтобы ввести забытый пароль, чтобы войти в систему и совершить покупку.
Но, с другой стороны, это открыло бы некоторые уязвимости, которыми я не являюсь слишком взволнован. Если клиент перешлет электронное письмо своему другу, а его друг перейдет по ссылкам, он также войдет в систему как его друг.
Конечно, вы могли бы попытаться научить своих клиентов не пересылать эти электронные письма, но это может оказаться непростой задачей. Идея о том, что пересылка маркетингового электронного письма другу позволит им несанкционированно войти в вашу учетную запись, - это не то, к чему люди быстро привыкнут.
Мысли?
ОБНОВЛЕНИЕ: Только что заметил, что Quora выполняет автологин из электронных писем с уведомлениями о комментариях.
2 answers
- Сохраните IP-адрес и/или агента пользователя, использованные при последнем размещении заказа или посещении клиентом, и сделайте ссылку работающей только с этим IP-адресом или агентом пользователя.
- Сделайте так, чтобы ссылка работала только один раз.
- Требуется действительно простая промежуточная аутентификация, например "Чтобы подтвердить, что вы Джейн Доу, пожалуйста, введите свой почтовый индекс:"
Я думаю, что не рекомендовал бы такую функцию...
Но в любом случае, если вы хотите создать эту функцию, рассмотрите следующие моменты:
Используйте логин на основе токенов, напримерhttp://shop.tld/?autologintoken=AABBCCDD
Если это только в первый раз, когда клиент входит в систему, ограничьте маркер аутентификации одним входом
Сделайте токен уникальным для каждого клиента, а также (что очень важно) не на основе имя пользователя/пароль/адрес/имя/электронная почта/что угодно. Mage_Core_Helper_Data::getrandomstring может вам помочь. Длина 32 должна быть минимальной, я бы сказал. Не используйте что-то вроде md5 (время())!
Меняйте токен каждый раз, когда клиент меняет свой пароль
Ограничьте доступ к учетной записи для клиентов, которые вошли в систему с помощью токена, например, позвольте им ввести свой пароль, если они хотят сменить адрес электронной почты или получить доступ к номерам CC. Это могло бы немного помочь улучшить безопасность
Не полагайтесь (!!!) на браузер, файлы cookie, IP или что-то еще