Как добавить функцию отмены подписки одним щелчком в рассылку по электронной почте? - PullRequest
20 голосов
/ 06 августа 2009

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

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

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

Ответы [ 7 ]

27 голосов
/ 06 августа 2009

Вы можете закодировать URL следующим образом:

http://yourserver.com/unsubscribe/<encoded-email>/<expiration>/<signature>

Где <signature> это что-то вроде HMAC(secretkey, "<encoded-email>/<expiration>"). Кодированная электронная почта может быть просто URL-кодировкой электронной почты или фактически зашифрованной (AES + CBC + Base64 или аналогичной) версией электронной почты. Использование полного шифрования может показаться бесполезным, поскольку у человека, получающего его, в любом случае есть собственный адрес электронной почты.

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

В качестве альтернативы (или в дополнение к вышесказанному) вы можете отправить подтверждение по электронной почте для подтверждения намерения пользователя. Это позволяет избежать проблем, если пользователь пересылает электронное письмо.

3 голосов
/ 06 августа 2009

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

2 голосов
/ 06 августа 2009

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

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

1 голос
/ 06 августа 2009

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

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

0 голосов
/ 30 октября 2018

Я присваиваю уникальную 32-символьную строку идентификатора (с MySQL: MD5(UUID())) каждому адресу электронной почты и отправляю этот идентификатор только по ссылке отказа от подписки.

0 голосов
/ 20 июня 2012

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

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

Затем в функции загрузки страницы моей страницы сначала я decrypt Email address, а затем проверяю, существует ли адрес электронной почты в моей БД, а затем, если ответ - ИСТИНА, я проверяю, есть ли ID и Email address связаны, и, наконец, я удаляю пользователя в соответствии с другим критерием.

Я думаю, что это сделало бы работу без какого-либо дополнительного ввода данных в DB.

Теперь я ищу способ узнать, является ли человек, который нажал на ссылку, первым, кому я отправил электронное письмо, или электронное письмо было переслано ему / ей. Так что никто, кроме реального пользователя, не может (хотя бы легко) отписаться от него / нее!

[Вопрос о секретном вопросе перед завершением процесса отписки - это одна вещь, о которой я до сих пор думал]

0 голосов
/ 16 декабря 2009

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

http://www.foo.com/unsubscribe.asp?ID=1234

А затем отмените подписку на адрес электронной почты, на который я отправил 1234.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...