使用更多Cookie而不仅仅是会话哈希进行身份验证的原因?

我通常在使用公告板软件的社区中闲逛。

我正在查看这个软件在我的浏览器中保存为cookie。

正如你所看到的,它可以节省6个饼干。 其中,我认为对认证非常重要的是:

  • ngisessionhash:当前会话的散列
  • ngipassword:密码的散列(可能不是简单的密码)
  • ngiuserid:用户的ID
  • 那些当然是我的假设。 我不确定是否使用ngilastactivity和ngilastvisit出于同样的原因。

    我的问题是:为什么要使用所有这些cookie进行身份验证? 我的猜测是,可能会生成一个会话哈希很容易,所以使用hashedpassword和userid增加了安全性,但是cookie spoofing呢? 我基本上离开了客户端的所有基本信息。

    你怎么看?

    更新#1

    这些cookie的内容是我认为它们包含的内容。 我不确定。 当然,如果调用cookie ngivbpassword并包含散列,我的猜测是hashedpassword。 可能它可能是密码+盐。

    我主要关心的是这些解决方案在cookie欺骗攻击下提供大量信息。

    更新#2这个问题不想批评这些特定软件的工作方式,但是,通过这些答案,我只想了解更多关于在Web环境中保护软件的信息。


    发生这种情况是因为会话和登录Cookie可能有不同的生命周期。

    想象一下每天有数百万用户的网站。 该网站不会将您的会话存储一年,只是在您下次回来时记录下来。 他们使用登录cookie。

    这些cookies也被称为Remember-Me cookies。


    会话不是持久的。 饼干是。

    更新#1:我没有使用vBullettin,但它看起来像经典的“记住我”功能。

    更新#2:

    是的,这是一个记住我的功能,我问他们为什么这样做

    好吧...你如何实现“记住我”功能? 你显然需要使用cookies,我认为这很明确。 现在,你存储什么?

    最天真的方式是以明文形式存储用户和密码并执行常规认证。 它是您可以使用的最不安全的机制之一,但有些网站实际上是这样做的。

    第二种稍微不太天真的方式是存储用户和密码的散列,并执行常规认证的修改版本。 不像以前的方法那么糟糕,但它仍然存在一些问题; 例如,没有有效的方法来禁用或过期从服务器保存的cookie。

    第三种方法是用“记住”的会话保留一个数据库表,用一个长的唯一字符串标识每个字符串并将这些字符串存储在cookie中。 字符串可以是随机的或计算的,但是,当然,随机性的优点是即使知道算法也不能猜测字符串。

    通过在服务器中存储日期,IP地址和其他数据片段可以实现进一步的安全性。

    正如我所说,我对vBulleting一无所知,但似乎他们正在使用方法2或方法3。

    更新#3:

    这些cookie的内容是我认为它们包含的内容。 我不确定。 当然,如果调用cookie ngivbpassword并包含散列,我的猜测是hashedpassword。 可能它可能是密码+盐。[...]我主要关心的是这些解决方案在cookie欺骗攻击下提供大量信息。

    成功的cookie欺骗功能可让您完全模仿用户,这样您就可以进入控制面板并享受免费的自助餐,从而使cookie内容无关紧要。

    无论他们存储一个sal密码还是只是一个名字,我都不知道。


    这是一个问题,你有什么担忧? 你在建立某种认证系统吗? 我也认为在cookies中拥有用户名和密码可能是一个安全问题。 是用户ID编码还是整数?

    链接地址: http://www.djcxy.com/p/4047.html

    上一篇: Reason to use more cookies than just a session hash for authentication?

    下一篇: Data Transfer Objects in PHP, lots of classes with the same contextual name