在阅读newes标准(仍然是beta版)时,我发现了一个要求,V2.6说
验证会话id在注销时是否已更改或清除。
我看不出为什么需要在注销后更改或清除会话id。有必要使会话失效,以便在注销后无法访问受保护的资源。但是,为什么我要更改会话id?纵深防御?
编辑:另一个对问题的回答。
发布于 2014-07-30 13:37:43
。有必要使会话失效,以便在注销后无法访问受保护的资源。但是,为什么我要更改会话id?纵深防御?
会话ID本身可以看作是与经过身份验证的用户会话相关联的一段私有信息。从客户端清除此ID可确保此私有值不再可用。
是的,这是一种深度防御,因为您将能够从客户端验证会话是否已经更改,这意味着服务器对当前会话不了解更多信息(即不绑定到任何用户帐户或保存任何私有数据等)。如果您正在根据ASVS标准检查应用程序,并且注意到会话ID在注销时发生了更改,那么您可以很好地确定所有会话数据都已清除,客户端不再可用。是的,从技术上讲,可以编写一个系统来将任何会话数据迁移到新会话,但是由于没有真正的理由这样做,这是一个很好的衡量应用程序会话处理质量的方法。
此外,发送旧ID可以作为测试的一部分,以确保它不再被确认为授权会话。
发布于 2014-07-29 13:22:25
因为可能的会话固定:http://en.wikipedia.org/wiki/Session_固着
在计算机网络安全中,会话固定攻击试图利用允许一个人固定(设置)另一个人的会话标识符(SID)的系统的漏洞。大多数会话固定攻击都是基于web的,大多数依赖于来自URL(查询字符串)或POST数据的会话标识符。
另一个问题:如果用户在注销后具有相同的会话id (即使清除了会话内容),攻击者就有可能延长被窃取的会话id的使用时间。Alice登录到某个站点;攻击者用会话id窃取cookie;Alice注销出站点;攻击者不能使用偷来的cookie访问站点;Alice登录到站点;攻击者可以使用偷来的cookie,因为Alice的会话id是相同的;
经验法则是尽可能频繁地更改会话id。
发布于 2014-07-29 13:18:33
这是说同样的话的另一种方式。其目标是,捕获经过身份验证的用户的会话id的恶意用户不应该继续使用该会话id与应用程序交互,就像用户注销后身份验证的用户一样。退出后,应用程序将不再识别该会话id。从实现的角度来看,这可能意味着您将使会话无效,或者更改服务器上的会话id,使其不再被旧的会话id引用。
https://security.stackexchange.com/questions/64215
复制相似问题