代码之家  ›  专栏  ›  技术社区  ›  Rasmus

如何实现QueryString身份验证

  •  3
  • Rasmus  · 技术社区  · 16 年前

    i_m开发客户网站,他们向客户发送新闻稿(通过网站管理界面) 这些新闻稿对每个订阅的收件人/客户都是私人的。 每个收件人/客户也是一个拥有用户名/密码的用户,通过该用户名/密码,他们可以登录网站并管理其新闻稿订阅并参与网站社区。

    这一切都很有魅力。 现在,我的客户希望在时事通讯电子邮件中有一个__Manage my subscriptions_链接,当按下该链接时,收件人/客户将自动在网站上签名,无需记住用户名和密码。

    如果制作这样的链接,可以很容易地解决这个问题:

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

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

    但是,这带来了一个问题,因为只有通过提供有效的用户名和密码,才能在网站上对用户进行身份验证。 以安全的名义,密码在数据库中以散列值的形式存储,这使得我无法在链接中插入密码。

    在不影响安全性的情况下,最好的方法是什么?

    3 回复  |  直到 16 年前
        1
  •  6
  •   JacquesB    16 年前

    如果你想让人们在不输入密码的情况下登录,就必须稍微牺牲你的安全性。请注意,即使您可以访问密码(如您的示例中所示),您也必须将其嵌入到以明文传输的邮件消息中。

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

    您可以隔离权限,以便通过新闻稿guid链接登录 只有 允许用户管理订阅,但参与论坛仍然需要真正的密码登录。在这种情况下,如果有人从邮件消息中访问到一个guid,那么破坏的破坏是非常有限的。

        2
  •  1
  •   Larry    16 年前

    使用包含访问令牌的加密cookie怎么样? 此cookie将在通过单独页面成功进行身份验证后传递。

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

    另外,您可以考虑使用安全的HTTPS而不是HTTP。

        3
  •  1
  •   Captain Toad    16 年前

    不能插入与密码哈希值绑定的加密用户名吗?

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