“cookie不可信任”时保留身份验证信息

时间:2011-04-26 17:58:06

标签: cookies

假设:

  1. 当用户登录时,还会检查“记住我”。
  2. 我检查并发现他有效。
  3. 我在会话变量中保存“true”。
  4. 我还用“true”保存了一个cookie。
  5. 用户关闭浏览器并稍后返回并打开网站。
  6. 我查看“真实”的cookie,以便我自动登录。
  7. 这是对网站一般如何运作的正确描述吗?或者我的步骤出了什么问题?

    我很好奇,因为我一直在阅读像 -

    这样的东西
    • 永远不要相信用户输入。 Cookie也是用户输入,所以永远不要相信它们
    • 通过嗅探,可以发现cookie并且有人可以破坏系统

    如果cookie对于安全性如此不可靠,我该如何继续保存登录信息?


    我正在研究ASP.Net。我只是在尝试自己的身份验证。

2 个答案:

答案 0 :(得分:0)

通常您创建某种令牌,对其进行加密,然后将加密的令牌放回cookie中。这就是Asp.Net Forms身份验证的工作原理。您也可以考虑伪登录。如果您有cookie,这将是您可以做某些事情的地方,但您必须登录才能做更重要的事情。例如,您可以在亚马逊上浏览推荐,但您必须登录才能订购。

答案 1 :(得分:0)

它主要取决于您存储的有关用户的信息类型,用户具有何种访问权限等。例如,是否可以在公共论坛上识别帐户?或者您是否存储地址,电话号码,信用卡信息等个人信息。?如果是后者,您将希望避免使用cookie进行持久登录。

但总的来说,你不应该只在cookie中存储一些“真实”值并检查它。我个人所做的事情(对于安全性不是 大问题的网站),是一个自定义函数,它接受IP地址并使用自定义算法将其混淆为字符串。然后使用sha1()(php)或其他东西加密字符串。然后将该加密字符串存储为cookie值。

当用户回来时,我基本上在请求IP上运行相同的自定义加密功能,看它是否与cookie值匹配。是IP地址可以更改,如果它不匹配,我提示用户实际登录并更新cookie值。

相关问题