白帽子讲web安全-认证与会话管理

who am i

认证的目的是为了认出用户是谁,而授权的目的是为了决定用户能够在做什么。

认证实际上就是一个验证凭证的过程。

密码的那些事情

首先是增强密码强度,

接着是密码必须是不可逆的加密算法,或者是单向散列函数算法,加密后存储在数据库中。

最后防止破解,增加了salt 这个随机字符串,注意这个字符串应该保存在服务器端的配置文件中,并妥善保管。

多因素认证

除了密码外,还可以增加手机动态指令,数字证书,支付盾,宝令,第三方证书。

session与认证

密码与证书等认证手段,一般般仅用于登录过程,验证一次,成功后,浏览器每次请求页面使用用户透明的凭证-sessionID

sessionID加密保存在cookie中,sessionID在生命周期内被窃取,就等于账户失窃,session劫持就是通过这个,使用sessionID登录目标账户攻击。如果sessionID是保存在cookie中的,则这种攻击就可以称为cookie劫持。

还可以保存在URL中,通过但是一个典型场景为referer泄露URL中的额sid.

session fixation攻击

车子交付后,我还有钥匙,这个没有换锁引起的安全问题就是session fixation问题。

sessionID保存在cookie中,比较难做到这一点。现在多用cookie,所以现在这个攻击很少有用武之地。

解决这个攻击正确做法是,在登录之后,重写sessionID。

如果使用sid则需要重置sid的值,如果使用cookie,则需要增加或改变用于认证的cookie。

session保持攻击

活动的session长期不消除。就会成为一个backasshole,成为一个攻击后门。攻击者通过不断发送访问请求,让session一直活下去。其原理就是不停的刷新页面,以保持session不过期。很多应用都是利用cookie的expire标签来控制session的失效时间。

如何对抗这种攻击呢。

一种方法是在一定时间后,强制销毁session。

单点登录sso

他希望用户只需要登录一次,就可以访问所有系统。从用户体验的角度,无疑让用户的使用更加方便。从安全的角度来说,把风险集中到一个单点上,这样做是有利有弊的。

目前最流行的最为开放和流行的是openID,这是个开放的单点登录框架,他希望使用URL作为用户在互联网的身份标识,每个用户拥有一个唯一的URL。

你可能感兴趣的:(白帽子讲web安全-认证与会话管理)