【问题标题】:Do you consider session replication as a security risk?你认为会话复制是一种安全风险吗?
【发布时间】:2014-05-13 11:04:33
【问题描述】:

您是否认为会话复制存在安全风险?我的意思是,如果攻击者设法劫持了会话,他仍然可以使用相同的有效会话,尤其是在会话在手动注销之前不会过期的情况下。您会提出哪些建议来防止会话复制?

【问题讨论】:

    标签: security session


    【解决方案1】:

    您可以有一个滚动的 Session ID - 每隔一段时间(例如,在一定数量的请求或某个短时间段之后),系统会生成一个新的 Session ID。

    为防止由于一个资源请求导致生成新的 Session ID 导致出现竞争条件错误,当前和之前的 Session ID 都应在翻转间隔期间被接受。

    实质上,这将导致其中一个有效会话(攻击者或受害者的)在他们的浏览器中过期,因为他们使用旧的 Session ID 并且没有收到包含新 ID 的 cookie。

    您应该显示一条消息,说明类似于您已注销,因为您的帐户在其他地方使用。如果这恰好是攻击者的机器,那就太好了——你已经阻止了攻击。如果这恰好是受害者的机器,至少他们知道他们的会话已被破坏,并且可以采取措施通知网站所有者。

    如果您还将此与在用户登录时使帐户的所有现有会话无效相结合,则再次登录的受害者用户会将攻击者踢出,攻击者将需要重新获取有效的会话 ID。这应该会显着减少攻击窗口,让系统在调查和修复 Session ID 泄漏时保持安全。

    【讨论】:

    • 好的!但是当攻击者使用一个有效的会话,然后在短时间内生成一个新会话时,不会在攻击者端和受害者端都生成新的会话 ID 吗?我想知道会话是否可以与浏览器实例绑定以使其唯一,这意味着如果会话被复制,它将无法在不同的浏览器/机器上工作。因此,即使应用程序允许运行多个会话,每个会话也仅在该特定浏览器或机器上有效。有没有办法做到这一点?
    • 那么Set-Cookie 标头只会被服务器发送一次,因此只有一个客户端会收到新的 Session ID。
    • 好的,有道理。您能否告诉我是否有办法让每个浏览器的会话都独一无二?
    • 也许这可能是一个新问题?如果是我熟悉的技术,也许我可以回答。您可以随时在此处链接到您的问题以提供上下文。
    【解决方案2】:

    当您不希望客户端有能力弄乱数据时,会话是一个更好的主意。

    例如使用会话变量来存储当前用户的用户 ID 是可以的。

    因此,使用 Session 总是一个好主意。但这取决于你如何管理它。 (使用一次就取消设置)

    但如果您使用Cookies则不推荐,因为它存储在用户的电脑中,用户可以自行修改、查看。

    【讨论】:

      猜你喜欢
      • 2013-05-03
      • 1970-01-01
      • 2011-11-09
      • 1970-01-01
      • 1970-01-01
      • 2016-06-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多