代码之家  ›  专栏  ›  技术社区  ›  Abdulsattar Mohammed

我们可以入侵一个只将用户名存储为会话变量的站点吗?

  •  8
  • Abdulsattar Mohammed  · 技术社区  · 17 年前

    我开发了我的网站,它检查用户是否注册,并用用户名创建一个会话变量。它就是作为会话变量存储的所有内容。如果我想保护我的页面(这样只有注册用户才能看到它们),我会检查是否设置了会话变量。 这样安全吗? 或者你能给出一个更安全的方法吗?

    2 回复  |  直到 17 年前
        1
  •  11
  •   Michael Stum    17 年前

    一般来说,会话是服务器端的,但是如果我以某种方式获得会话ID,我就可以劫持它。

    我建议至少存储IP和用户代理,如果不匹配,则使会话无效。

        2
  •  1
  •   Community Mohan Dere    9 年前

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

    • 如果您不使用安全连接(如ssl),则可以对sessionid进行嗅探和劫持。这并不重要,因为用户名和通行证也可能被劫持,并且您会受到“中间人”攻击等。因此,基本上,您的系统很好,没有SSL的安全性很低。
    • 在关于PHP的文章中,他们提到了一些关于共享托管和会话劫持的问题。我不确定这是不是真的,所以我发了一个问题 here . 编辑: 这个问题似乎是真的,所以如果您使用PHP,那么必须使用其中一个解决方法来存储会话(例如,数据库)。

    不过,一般来说,提到的大多数安全问题(包括XSS攻击)不是在会话中存储内容,而是一般的安全问题。在会话中存储用户ID——或者同样的某种加密形式——通常是非常安全的。

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

    我可以找到一个更合适的布鲁斯·施耐尔的引言,但这句话可以做到,“没有人能复制RSA在20年的密码分析审查后所提供的信心。”