Подтвердить что ты не робот

Как добавить функциональность отмены подписки на один клик для отправки новых писем?

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

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

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

4b9b3361

Ответ 1

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

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

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

Эта схема подписи имеет то преимущество, что не требуется какое-либо хранилище базы данных, оставаясь в безопасности от вредоносных попыток отменить подписку на кого-либо.

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

Ответ 2

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

Ответ 3

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

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

Ответ 4

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

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

Ответ 5

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

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

Затем в функции загрузки страницы моей страницы сначала я decrypt Email address, а затем я проверяю, существует ли адрес электронной почты в моей БД, а затем, если ответ TRUE, я проверяю, t23 > и Email address связаны, и, наконец, я удаляю пользователя в соответствии с другим критерием.

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

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

[Задавать вопрос безопасности до завершения процесса отмены подписки - это одно, о чем я думал до сих пор]

Ответ 6

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

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

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