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。
网友评论