我正在开发一个客户网站,他们正在向客户发送新闻通讯(通过网站管理界面) 新闻通讯对每个订阅的收件人/客户都是个人的。 每个收件人/客户也是具有用户名/密码的用户,使他们能够登录网站并管理他们的简报订阅并参与网站社区。 p>
这一切都像一个魅力。 现在,我的客户希望在时事通讯电子邮件中显示“管理我的订阅”链接,当按下时会自动在网站上签名收件人/客户,而无需记住用户名和密码。
这可以通过这样的链接轻松解决:
http://mysite.com/manage.aspx?user=peter&password=hounddog
当然,信息不应该是明文,而是以某种方式加密。
然而,这会产生问题,因为如果通过提供有效的用户名和密码,用户可以在网站上进行身份验证的唯一方法。 在安全性的名称中,密码作为散列值存储在数据库中,这使我无法在链接中插入密码。
在不影响安全性的情况下实现这一目标的最佳方法是什么?
答案 0 :(得分:6)
如果您希望人们无需输入密码即可登录, 必须在某种程度上危及您的安全。请注意,即使您有权访问密码(如您的示例所示),您也必须将其嵌入邮件按摩中,然后以明文形式传输。
您可以创建与每个用户和消息关联的Guid,并将其附加到URL,并允许自动登录。
您可以隔离权限,以便通过简报guid链接仅进行登录,允许用户管理订阅,但仍需要真正的密码登录才能参与论坛。在这种情况下,如果有人通过邮件消息访问Guid,那么它的破坏性就会受到严重破坏。
答案 1 :(得分:1)
使用包含访问令牌的加密cookie怎么样? 在通过单独的页面成功进行身份验证后,将传递此cookie。
此类令牌也可以是URL查询字符串的一部分。
您也可以考虑使用安全的https而不是http。
答案 2 :(得分:1)
您是否可以插入与密码哈希值捆绑在一起的加密用户名?
我的意思是,加密&将用户名编码为特定长度或在其中包含已知的中断字符,然后附加密码哈希值。这样,您可以轻松地拆分查询字符串,同时仍然可以安全地编码用户名和密码。直接比较哈希值就足够了,未加密的解码用户名允许访问。