我想在我们的电子邮件简报中自定义"取消订阅"链接,以便他们只需点击一下即可删除收件人.现在他们只是指向一个通用页面,用户必须输入他们的电子邮件地址并选择他们想要取消订阅的新闻通讯.
看起来这应该非常简单,即只包括电子邮件地址和简报ID作为url参数.但是,当我查看我订阅的列表中的示例时,许多都不包含可识别的地址,并且大多数似乎在参数中使用类似guids和/或散列值的内容.从那以后,我猜测我应该散列或以其他方式编码一些信息,以防止恶意滥用取消订阅表单.
所以我的问题是关于最佳实践,而不是重新发明轮子.有没有一种标准的方法来处理这种功能?更具体地说,是否有理由不将收件人的电子邮件地址作为网址的一部分?这看起来很简单,让我觉得我忽略了什么.
bdo*_*lan 27
您可以像这样对URL进行编码:
http://yourserver.com/unsubscribe/<encoded-email>/<expiration>/<signature>
Run Code Online (Sandbox Code Playgroud)
哪里<signature>是一样的东西HMAC(secretkey, "<encoded-email>/<expiration>").编码电子邮件可以只是电子邮件的URL编码,也可以是电子邮件的实际加密版本(AES + CBC + Base64或类似版本).使用完全加密似乎没什么用处 - 因为收到此邮件的人无论如何都有自己的电子邮件地址.
这种签名方案的优点是不需要任何数据库存储,同时保持安全,防止恶意企图取消订阅某人.
或者(或除上述之外),您可以发送确认邮件以确认用户的意图.如果用户转发电子邮件,这可以避免问题.
| 归档时间: |
|
| 查看次数: |
13998 次 |
| 最近记录: |