创建取消订阅链接

2024-10-02 22:30:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我想实现一个时事通讯服务。该服务的用户将每周收到一封电子邮件,在每封电子邮件的底部都会有一个“退订链接”。用户单击该链接将直接取消订阅该服务。一种方法是散列电子邮件ID,为每个用户生成令牌,然后可以使用这些令牌为该用户创建“取消订阅链接”

我正在用python实现这个系统,我找到了提供这种功能的库isdangerous

当每个用户注册并使用相同的令牌作为所有新闻稿的取消订阅链接时,为他们生成令牌是否安全?若否,应如何进行


Tags: 方法用户功能id链接电子邮件系统新闻稿
1条回答
网友
1楼 · 发布于 2024-10-02 22:30:25

如果您将令牌与用户条目一起存储,那么为什么还要增加通过哈希(如果我理解正确,那么实际上是消息身份验证)从用户电子邮件地址生成令牌的复杂性呢

您可以生成一个随机令牌(例如在注册时),为您的用户存储该令牌,电子邮件中的“取消订阅”链接将发送电子邮件地址和令牌作为参数。请注意,这意味着所有此类电子邮件都将包含可用于取消用户订阅的令牌,但这可能没问题(但不要将令牌用于其他目的)。您还可以为每封电子邮件生成和存储不同的随机令牌,并存储那些具有一定到期日的令牌,以限制令牌的数量。这样做的好处是,攻击者获得此类退订令牌访问权限的时间有限,而且您还可以知道用户退订的确切电子邮件

此外,链接不应直接取消用户订阅,因为某些电子邮件客户端可能会在用户打开电子邮件时下载链接。您应该有一个确认步骤,为了防止CSRF,该确认应该使用POST来实际取消订阅用户(传递相同的令牌)

相关问题 更多 >