我们可以破解只将用户名存储为会话变量的网站吗?

时间:2009-01-25 12:37:23

标签: php security login

我开发了我的网站,检查用户是否已注册,并使用用户名创建会话变量。所有这些都存储为会话变量。如果我想保护我的页面(以便只有注册用户可以看到它们),我会检查是否设置了会话变量。 这样安全吗? 或者你能提供更安全的方法吗?

2 个答案:

答案 0 :(得分:11)

通常,会话是服务器端,但如果我以某种方式获得会话ID,我就可以劫持它。

我建议至少存储IP,也可能是用户代理,如果不匹配,会话无效。

答案 1 :(得分:1)

基本上,您可以在Session中存储您想要的任何内容。唯一需要注意的是:

  • 如果您不使用安全连接(如SSL),则可以嗅探并劫持sessionId。这并不重要,因为用户名和密码也可以被劫持,并且你受到“中间人”攻击等等。所以基本上,你的系统很好,并且在没有SSL的情况下提供低安全性。
  • 在关于PHP的文章中,他们提到了共享主机和会话劫持的一些问题。我不确定这是否属实,所以我发布了一个问题here编辑:这种担忧似乎是真的,因此如果您使用PHP,则必须使用其中一种解决方法来存储会话(例如,数据库)。

一般而言,提到的大多数安全问题(包括XSS攻击)都不是在Session中存储内容而是一般安全问题。在Session中存储用户标识 - 或其某些加密形式 - 通常是非常安全的。

最重要的是:如果您使用自己的算法为每个用户生成随机cookie代码,那么毫无疑问会比PHP的会话密钥生成算法有更多的安全漏洞(不是专家) ,ASP.NET,Rails,等等......

我可以找到一个更合适的Bruce Schneier引用,但是这个引用会做,“没有人可以复制RSA在经过20年的密码分析审查后提供的信心。”