《白帽子讲Web安全》9-认证与会话管理

第9章 认证与会话管理

9.1 Who am I?

  1. 认证与授权
认证授权
AuthenticationAuthorization
为了认出用户是谁为了决定用户能够做什么

认证就是开锁的过程。开门之后,什么事情能做,什么不能做,就是“授权”的管辖范围了。

如何授权是取决于认证的。

  1. 认证是一个验证凭据的过程。
    • 单因素认证 & 双因素认证 & 多因素认证
    • 一般来说,多因素认证的强度要高于单因素认证,但是在用户体验上,多因素认证或多或少会带来一些不方便的地方。

9.2 密码的那些事儿

  1. 密码是最常见的一种认证手段
    • 密码的优点是使用成本低
    • 密码的缺点是密码认证是一种比较弱的安全方案,可能会被猜解。
  2. 设计密码认证方案要考虑的因素:
    • 密码强度(OWASP推荐)
      • 密码长度
      • 密码复杂度
      • 另外,不要使用用户的公开数据,或者是与个人隐私相关的数据作为密码。
    • 密码的保存
      • 密码必须以不可逆的加密算法,或者是单向散列函数算法,加密后存储在数据库中。
      • 将明文密码经过哈希后(比如MD5或者SHA-1)再保存到数据库中,是目前业界比较普遍的做法。
      • 彩虹表是目前广泛使用的一种破解MD5后密码的方法。
        • 防范:再计算密码明文的哈希值时,增加一个Salt
        • Salt是一个字符串,它的作用是为了增加明文的复杂度,并能使得彩虹表一类的攻击失效。

9.3 多因素认证

多因素认证提高了攻击的门槛。

9.4 Session与认证

  1. 密码与证书等认证手段,一般仅仅用于登录的过程。
  2. 当认证成功后,需要替换一个对用户透明的凭证,这个凭证就是SessionID。
    • 当用户登录完成后,在用户端就会创建一个新的会话(Session),会话中会保存用户的状态和相关信息。
    • 服务器端维护所有在线用户的Session。
  3. 最常见的做法就是把SessionID加密后保存在Cookie中,因为Cookie会随着HTTP请求头发送,且受到浏览器同源策略的保护。
    • SessionID一旦在生命周期中被窃取,就等同于账户失窃。
    • Session劫持就是一种通过窃取用户SessionID后,使用该SessionID登录进目标账户的攻击方法。此时攻击者实际上是使用了目标账户的有效Session。
    • 如果SessionID是保存在Cookie中的,则这种攻击可以称为Cookie劫持。
  4. SessionID除了可以保存在Cookie中外,还可以保存在URL中,作为请求的一个参数。
    • 但是这种方式的安全性难以经受考验。
  5. 在生成SessionID时,需要保证足够的随机性,比如采用足够强的伪随机数生成算法。

9.5 Session Fixation攻击

  1. 卖车,不换锁的例子。
    • 这个没有换“锁”而导致的安全问题,就是Session Fixation问题。
  2. 在用户登录网站的过程中,如果登录前后用户的SessionID没有发生变化,则会存在Session Fixation问题。
  3. 解决Session Fixation的正确做法:在登录完成后,重写SessionID

9.6 Session保持攻击

  1. Session如果一直未能失效,会导致什么问题呢?
    • 如果攻击者能一直持有一个有效的Session,而服务器对于活动的Session也一直不销毁的话,攻击者就能通过此有效Session,一直使用用户的账户,成为一个永久的“后门”
  2. 攻击者如何永久地持有一个Session?
    • 攻击者可以通过不停地发起访问请求,让Session一直“活”下去。
    • Cookie是可以完全由客户端控制的,通过发送带有自定义Cookie头地HTTP包。
    • 有一种做法是服务器端不维护Session,而把Session放在Cookie中加密保存。
      • Cookie的Expire时间是完全可以由客户端控制的。
        • 篡改这个时间,并使之永久有效,就有可能获得一个永久有效的Session,而服务器端完全无法察觉。
        • 攻击者甚至可以为Session Cookie增加一个Expire时间,使之持久化地保存在本地,变成一个第三方Cookie。
  3. 如何对抗这种Session保持攻击?
    • 在一定时间后,强制销毁Session
    • 当用户客户端发生变化时,要求用户重新登录。
      • 如IP、UserAgent等信息。
    • 每个用户只允许拥有一个Session。

9.7 单点登录(Single Sign On,SSO)

  1. 单点登陆,希望用户只需要登录一次,就可以访问所有的系统。
  2. SSO的优点:在于风险集中化,就只需要保护好这一点。
  3. SSO的缺点:因为风险集中了,所以单点一旦被攻破的话,后果会非常严重,影响的范围将涉及所有使用单点登录的系统。
    • 降低这种风险的办法:在一些敏感的系统里,再单独实现一些额外的认证机制。
  4. 目前最为开放和流行的单点登录系统时OpenID。
    • OpenID模式仍然存在一些问题
    • OpenID的提供者服务水平也有高有低。

9.8 小结

  1. 认证的手段
    • 密码
    • 双因素认证/多因素认证
  2. Session
    • SessionID
  3. 单点登录
    • OpenID
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值