【发布时间】:2014-05-13 11:04:33
【问题描述】:
您是否认为会话复制存在安全风险?我的意思是,如果攻击者设法劫持了会话,他仍然可以使用相同的有效会话,尤其是在会话在手动注销之前不会过期的情况下。您会提出哪些建议来防止会话复制?
【问题讨论】:
您是否认为会话复制存在安全风险?我的意思是,如果攻击者设法劫持了会话,他仍然可以使用相同的有效会话,尤其是在会话在手动注销之前不会过期的情况下。您会提出哪些建议来防止会话复制?
【问题讨论】:
您可以有一个滚动的 Session ID - 每隔一段时间(例如,在一定数量的请求或某个短时间段之后),系统会生成一个新的 Session ID。
为防止由于一个资源请求导致生成新的 Session ID 导致出现竞争条件错误,当前和之前的 Session ID 都应在翻转间隔期间被接受。
实质上,这将导致其中一个有效会话(攻击者或受害者的)在他们的浏览器中过期,因为他们使用旧的 Session ID 并且没有收到包含新 ID 的 cookie。
您应该显示一条消息,说明类似于您已注销,因为您的帐户在其他地方使用。如果这恰好是攻击者的机器,那就太好了——你已经阻止了攻击。如果这恰好是受害者的机器,至少他们知道他们的会话已被破坏,并且可以采取措施通知网站所有者。
如果您还将此与在用户登录时使帐户的所有现有会话无效相结合,则再次登录的受害者用户会将攻击者踢出,攻击者将需要重新获取有效的会话 ID。这应该会显着减少攻击窗口,让系统在调查和修复 Session ID 泄漏时保持安全。
【讨论】:
Set-Cookie 标头只会被服务器发送一次,因此只有一个客户端会收到新的 Session ID。
当您不希望客户端有能力弄乱数据时,会话是一个更好的主意。
例如使用会话变量来存储当前用户的用户 ID 是可以的。
因此,使用 Session 总是一个好主意。但这取决于你如何管理它。 (使用一次就取消设置)
但如果您使用Cookies则不推荐,因为它存储在用户的电脑中,用户可以自行修改、查看。
【讨论】: