"cookies cannot be trusted"时保留身份验证信息



假设如下:

  1. 当用户登录时,也会勾选"记住我"。
  2. 我检查了一下,发现他是有效的。
  3. 我将"true"保存在一个会话变量中。
  4. 我也用"true"保存一个cookie。
  5. 用户关闭浏览器,稍后返回并打开站点。
  6. 我检查cookie显示"true",以便我自动登录他。

这是一个正确的描述如何网站一般工作?还是我的脚步出了什么问题?

我越来越好奇了,因为我一直在读-

    永远不要相信用户输入。cookie也是用户输入,所以永远不要相信它们
  • 通过嗅探,cookie可以被发现,有人可以破坏系统

如果cookie在安全方面如此不可靠,我该如何持久化登录信息?


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

这主要取决于您存储的是关于用户的哪种信息,用户具有哪种访问权限等。例如,拥有一个账户的唯一目的是在公共论坛上被识别吗?或者您是否在存储地址、电话号码、信用卡信息等个人信息?如果是后者,您将希望避免使用cookie进行持久登录。

但一般来说,你不应该只是在cookie中存储一些"真"值并检查它。我个人所做的(对于安全性不是真正大问题的站点)是创建一个自定义函数,该函数接受IP地址并使用自定义算法将其模糊化为字符串。然后使用sha1() (php)或其他东西加密字符串。然后将加密字符串存储为cookie值。

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

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

最新更新