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

时间:2010-12-27 14:42:50

标签: php security authentication session-cookies spoofing

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

我正在浏览此软件在浏览器中保存为cookie的内容。

如您所见,它可以节省6个Cookie。其中,我认为对认证很重要的是:

  1. ngisessionhash:当前会话的哈希
  2. ngipassword:密码的哈希(可能不是普通密码)
  3. ngiuserid:用户的ID
  4. 这些是我的假设。我不确定是否使用 ngilastactivity ngilastvisit 是出于同样的原因。

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

    您怎么看?

    更新#1

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

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

    更新#2 这个问题不想批评这些特定软件的工作方式,但是,我希望这些答案只是为了更多地了解如何在网络环境中保护软件。

4 个答案:

答案 0 :(得分:2)

这是因为会话和登录cookie可能具有不同的生命周期。

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

这些cookie也称为Remember-Me cookies。

答案 1 :(得分:1)

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

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

更新#2:

  

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

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

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

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

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

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

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

更新#3:

  

这些cookie的内容是什么   我认为它们包含。我不确定   关于它。当然如果叫一个cookie   ngivbpassword并包含一个哈希,我的   猜是哈希密码。可能是这样   可能是密码+盐。[...]我的主要   关注的是这些解决方案   在a下的很多信息   cookie欺骗攻击。

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

他们是否存储了盐渍密码,或者只是一个名字,这是我不知道的。

答案 2 :(得分:0)

这是一个问题,你有什么顾虑?你在构建某种身份验证系统吗? 我还认为在cookie中使用用户ID和密码可能是一个安全问题。 是用户ID编码还是整数?

答案 3 :(得分:0)

  • Cookie应该尽可能地保持与您在服务器上的人无关。

  • Sessionhash,session_id或sid是您的唯一ID(您在服务器上的会话)。其余的cookie可以很容易地隐藏在服务器端。

  • 在Cookie中保留密码哈希是一个安全问题。你应该避免这种情况。

  • 最近4个Cookie来自Google广告。

PS。无论如何,大多数公告板都不是那么好的软件。