2012-10-06 43 views
2

我在这里读了几个答案这个话题,和人说会话使用更安全,使用只有饼干,但我看不出这怎么可能是真的。用户登录安全性 - 本地饼干VS会议

比方说,你正在使用的会话,并在客户端计算机上只存储会话ID。如果黑客可以访问客户端的计算机并窃取会话ID cookie,他实际上可以访问我的网站上的客户帐户,对吗?

现在,如果您仅使用本地Cookie,并将其存储为客户端密码的散列部分+结合了只有您的服务器知道的盐,黑客仍然可以通过窃取其cookie来访问其帐户他的电脑。

所以最后两种方法没有区别,对吧?或者我错过了什么?

+0

在会话的情况下,你可以放更多的图层。例如。 IPS。或者,即使有人窃取会话,这些添加的图层也可以防止劫持。它不是牢不可破的,但绝对难以打破。 – itachi

回答

1

你所缺少的是一点,必须有饼干,数据库和会话的team play

要获得安全相当数量的,做这些步骤:

  1. 当用户成功登录与记住选中,登录cookie中除了标准的会话管理的cookie发出。

  2. 登录cookie包含用户的用户名,并从适当大的空间,一个随机数(从这里开始的“令牌”)。用户名和标记作为一对存储在数据库表中。

  3. 当一个非登录用户访问该网站并显示一个登录cookie,用户名和令牌在数据库中查找。

    • 如果配对存在,则认为该用户已通过认证。使用的令牌从数据库中删除。生成一个新的令牌,使用用户名存储在数据库中,并通过新的登录cookie发布给用户。
    • 如果该对不存在,则会忽略登录cookie。
  4. 仅通过此机制进行身份验证的用户不允许访问某些受保护的信息或功能,如更改密码,查看个人身份信息或花钱。要执行这些操作,用户必须首先成功提交正常的用户名/密码登录表单。

  5. 由于此方法允许用户从不同的浏览器或计算机获取多个记住的登录信息,因此会为用户提供一种机制,以便在单个操作中删除所有记住的登录信息。

这是来自查尔斯·米勒的article,“永久登录cookie最佳实践”

3

你是对的,如果黑客获得完全访问你的电脑,你酿无论哪种方式,直到会话在服务器端无效。

如果只依靠于cookie进行会话,它并没有真正如果你使用一个会话ID或用户的凭据的哈希值加上特有的用户盐无所谓。它们是等同的,只要您可以调整服务器上的salt以使cookie值无效。通常你会应用两种盐:一种是为每个用户定义的,另一种适用于所有用户。这样,您可以根据需要为所有用户或仅选定的用户使所有会话无效。

但是,为会话使用cookie有一个很好的理由:防止跨站点请求伪造(XSRF)。例如。您在哪里访问攻击者的网站,并在您的银行网站上拨打一个页面并从您的帐户中转账。如果您银行的网站使用cookies进行会话,它将会成功登录您,因为浏览器会自动将会话cookie传递到网站。

避免这个问题的方法是,通过所述会话ID在所述请求中的有效载荷,而不是作为cookie和,在服务器侧,仅看有效载荷中的会话令牌以确定会话,永曲奇饼。

+0

是的,请求有效载荷中有另一个会话标识符来防范CSRF是个好主意。我还要确保这是作为POST请求发送的,而不是GET请求,以防止存储在浏览器历史记录,代理历史记录,服务器日志等中的值。 – SilverlightFox

1

只是为了回答你的问题,而且仅仅是在客户端(会话ID)中存储的数据仅在黑客自动过期之前一段时间内可用的情况下,会话更安全。但是,如果您在客户端(作为cookie)保留登录信息的任何部分,只要它们不被用户更改,它们就会有效。您甚至可以通过每个请求重新生成会话ID,以尽可能缩短会话ID的生命周期。

[编辑]

让我们把存储在客户端The Key的信息。它可以是会话ID或散列登录信息。使用这个关键用户可以验证他的请求。现在,如果别人偷走了The Key,他可以做任何用户可以做的事情。冒名顶替者不需要解密The Key以便使用它,只要他可以复制它就可以。停止冒名顶替者的唯一方法是使The Key失效。所以无论你的钥匙是什么,只要它是可以复制的。重要的是何时以及如何使其无效。

+0

如果您仅使用盐保留散列,则只有服务器知道(正如OP建议的那样),您可以通过更改服务器salt来使Cookie无效,就像无效会话ID一样容易。 –

+0

你怎么知道哪个盐用于哪个请求?你不需要一个会话ID吗?从理论上讲,不暴露重要信息比加密更安全。 – Mehran

+0

如果它是一个安全的散列(SHA-1说),你用盐,那么你没有暴露任何东西。盐可以与每个用户的账户一起存储,组合实际上是一个会话ID。它们是相同的,除非相同的盐适用于所有用户。通常你会应用两种盐:每个用户一个,所有用户一个。这样,您可以根据需要为所有用户或仅选定的用户使所有会话无效。 –