认证与会话管理

简介

  认证的目的是为了认出用户是谁,而授权的目的是为了决定用户能够做什么。
  认证实际上就是一个验证凭证的过程。

  如果只有一个凭证被用于认证,则称为"单因素认证"
  如果有两个或多个凭证被用于认证,则称为“双因素(two factors)认证”或"多因素认证"。

Session Fixation攻击

  没有换锁而导致的安全问题,就是Session Fixation问题,在用户登录网站的过程中,如果登陆前后用户的Session ID没有发生变化,则会存在Session Fixation问题。
  解决Session Fixation问题的正确做法是,在登录完成后,重写SessionID。如果使用sid则需要重置sid的值;如果使用cookie,则需要增加或修改用于认证的cookie值。

Session保持攻击

  一般来说Session是有生命周期的,当用户长时间未活动后,或者用户点击退出后,服务器将销毁Session。
  攻击者可以通过不停的发起访问请求,让Session一“直活”下去。
  当Session被加密保存在cookie里时,很多应用都是利用cookie的expire标签来控制Session的失效时间。cookie的expire时间是完全可以由客户端控制的。攻击者甚至可以为Session cookie增加一个expire时间。
  对抗这种Session保持攻击,一般为Session设置一个阈值。比如2天后强制Session过期。

单点登录(SSO)

  单点登录的英文全称是Single Sign On简称SSO。他希望用户只需登录一次,就可以访问所有系统。(腾讯QQ)
  SSO的优点在于风险及中化,就只需要保护这一个点。它把用户登录的过程集中在一个地方,在单点出设计安全方案,甚至可以考虑一些“重”的方法,比如双因素认证。
  SSO的缺点是,因为风险集中了,所以单点一旦被攻破了的话,后果会非常严重,影响的范围将涉及所有单点登陆系统。降低风险的办法是在一些敏感的系统里,再单独实现实现一个额外的认证机制。
  目前互联网上最为开放和流行的单点登录系统是OpenID。OpenID是一个开放的单点登录框架,他希望使用URI作为用户在互联网上的身份标识,每个用户(End User)将拥有一个唯一的URI。在用户登录网站(Relying Party)时,用户只需要提交他的OpenID(就是用户唯一的URI)以及OpenID的提供者(OpenID Provider),网站就会将用户定向到OpenID的提供者进行认证,认证完成后在重定向回网站。

小结

  在web应用中,用户登录之后,服务器端通常会建立一个新的Session用来跟踪用户状态。每个Session对应一个标识符SessionID,SessionID用来标识用户身份,一般是加密保存在cookie中。有的网站也会将Session保存在cookie中,以减轻服务器端维护Session的压力,围绕着Session可能产生很多安全问题,这些问题都是在设计安全方案时需要考虑到的。

详情请参考书籍
摘自:《白帽子讲Web安全》 — 吴翰清

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容