7

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

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

如您所见,它保存了 6 个 cookie。其中,我认为对身份验证很重要的是:

  1. ngisessionhash:当前会话的哈希
  2. ngipassword:密码的哈希(可能不是普通密码)
  3. ngiuserid:用户ID

这些当然是我的假设。我不确定是否出于同样的原因使用了ngilastactivityngilastvisit 。

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

你怎么看?

更新#1

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

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

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

4

4 回答 4

2

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

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

这些 cookie 也称为记住我的 cookie。

于 2010-12-27T15:59:37.300 回答
1

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

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

更新#2:

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

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

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

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

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

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

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

更新#3:

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

成功的 cookie 欺骗允许您完全冒充用户,因此您只需进入控制面板即可享受免费自助餐,从而使 cookie 内容无关紧要。

他们是否存储加盐密码或只是一个名称,我不知道。

于 2010-12-27T15:02:08.630 回答
0

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

于 2010-12-27T15:53:13.243 回答
0
  • Cookies 应该尽可能小,包含有关您在服务器上的身份的信息。

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

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

  • 最后 4 个 cookie 来自谷歌广告。

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

于 2010-12-27T15:58:23.297 回答