【发布时间】:2011-05-31 04:16:34
【问题描述】:
我通常在使用公告板软件的社区中闲逛。
我正在查看这个软件在我的浏览器中保存为 cookie 的内容。
如您所见,它保存了 6 个 cookie。其中,我认为对认证很重要的是:
- ngisessionhash:当前会话的哈希
- ngipassword: 密码的散列(可能不是普通密码)
- ngiuserid:用户 ID
这些当然是我的假设。我不确定是否出于相同的原因使用了 ngilastactivity 和 ngilastvisit。
我的问题是:为什么要使用所有这些 cookie 进行身份验证?我的猜测是,可能生成会话哈希会很容易,因此使用 hashedpassword 和 userid 会增加安全性,但是 cookie 欺骗呢?我基本上把所有基本信息都留给了客户端。
你怎么看?
更新 #1
这些 cookie 的内容就是我认为它们包含的内容。我不确定。 当然,如果调用 cookie ngivbpassword 并包含哈希,我猜是 hashedpassword。可能是密码+盐。
我主要担心这些解决方案在受到 cookie 欺骗 攻击时会提供大量信息。
更新 #2 这个问题不想批评这些特定软件的工作方式,但是,通过这些答案,我只想了解更多关于在网络环境中保护软件的信息。
【问题讨论】:
-
ngivbpassword 是密码的哈希值??真的吗?!在每个加密请求中发送您的密码哈希是个坏主意...
-
是的,这是我的:P cb17eee800v1361cee7985d731673c8g
-
@shfx:实际上是一个哈希值。我更新了我的问题,因为可能不清楚这些是我的假设。
-
除了学习目的之外,例如在这个例子中,您应该尽可能重用现有的身份验证框架,它通常包括一个安全“记住我”的实现。例如,看看github.com/delight-im/PHP-Auth,它既与框架无关,又与数据库无关。
标签: php security authentication session-cookies spoofing