3

我正在开发一个客户的网站,他们正在向他们的客户发送时事通讯(通过网站管理界面)。时事通讯对于每个订阅的收件人/客户都是个人的。每个收件人/客户也是具有用户名/密码的用户,使他们能够登录网站并管理他们的时事通讯订阅并参与网站社区。

这一切都像一个魅力。现在我的客户想要在时事通讯电子邮件中添加一个“管理我的订阅”链接,当按下该链接时,它会自动在网站上登录收件人/客户,而无需记住用户名和密码。

通过这样的链接可以很容易地解决这个问题:

http://mysite.com/manage.aspx?user=peter&password=hounddog

当然,信息不应该是明文,而是以某种方式加密。

然而,这带来了一个问题,因为如果通过提供有效的用户名和密码,用户可以在网站上进行身份验证的唯一方法。以安全的名义,密码作为散列值存储在数据库中,使我无法在链接中插入密码。

在不影响安全性的情况下完成此任务的最佳方法是什么?

4

3 回答 3

6

如果您希望人们能够在不输入密码的情况下登录,您将不得不在某种程度上损害您的安全性。请注意,即使您可以访问密码(如您的示例中所示),您也必须将其嵌入到以明文形式传输的邮件消息中。

您可以创建与每个用户和消息关联的 Guid,并将其附加到 URL,并允许其自动登录。

您也许可以隔离权限,以便通过时事通讯 guid 链接登录允许用户管理订阅,但仍需要真正的密码登录才能参与论坛。在这种情况下,如果有人从邮件消息中访问 Guid,那么可能造成的破坏是非常有限的。

于 2008-10-07T12:47:36.327 回答
2

您不能插入与密码的哈希值捆绑在一起的加密用户名吗?

我的意思是,将用户名加密和编码为始终为特定长度或在其中包含已知的中断字符,然后附加密码哈希值。这样,您可以轻松地拆分查询字符串,同时仍然对用户名和密码进行安全编码。哈希值的直接比较就足够了,未加密、解码的用户名允许访问。

于 2008-10-07T12:50:20.813 回答
1

使用包含访问令牌的加密 cookie 怎么样?此 cookie 将在一个单独的页面成功验证后交付。

这种标记也可以是 URL 查询字符串的一部分。

您也可以考虑使用安全的 https 而不是 http。

于 2008-10-07T12:48:40.817 回答