Полагаю, вы где-то сохраняете эти адреса электронной почты. Так что довольно легко сделать безопасный идентификатор для каждой вашей записи. Является ли это хешем или каким-то другим способом шифрования, не имеет значения. Но я думаю, что хеш проще реализовать и на самом деле предназначен для этой работы.
Таким образом, вы хэшируете, например, адрес электронной почты, значение PK записи, отметку времени, когда она была добавлена, и некоторые действительно невозможно угадать соль. Просто объедините различные поля вместе и хэшируйте их.
В конце концов, вы отправляете на сервер только хешированный ключ. Поэтому, когда вы отправляете эти две ссылки, они могут выглядеть следующим образом:
http://www.url.com/newsletter/acceptsubscription.aspx?id=x1r15ff2svosdf4r2s0f1
http://www.url.com/newsletter/cancelsubscription.aspx?id=x1r15ff2svosdf4r2s0f1
Когда пользователь нажимает на такую ссылку, ваш сервер ищет в базе данных запись, которая содержит предоставленный ключ. Легко реализовать и действительно безопасно, если все сделано правильно. Ни в коем случае в аду никто не может угадать ключ от другого человека. Просто помните стандартные вещи, когда делаете что-то с хешированием. Такие как:
- Не забудьте добавить соль.
- Выберите очень медленный и действительно безопасный алгоритм хеширования.
- Просто убедитесь, что никто не может выяснить свой собственный хэш, исходя из информации, которой он может обладать.
- Если вы действительно боитесь, что люди будут совершать плохие поступки, обязательно прекратите брутфорс, добавив на сайт контроль газа. Например, разрешить только X запросов в минуту. Или какая-то форма запрета на IP-адрес.
Я не эксперт в этих вещах, так что может быть место для улучшения. Однако я думаю, что это должно указать вам правильное направление.
edit : Я должен добавить; Решение, предоставленное Тимом С., тоже хорошо. GUID действительно очень полезны для подобных ситуаций и работают так же, как мое хешированное решение выше.