9.1 Who am I?
(1)认证的目的是为了认出用户是谁,授权的目的是为了决定用户能够做什么,实际上就是一个验证凭证的过程。
(2)如果只有一个凭证被用于认证,则称为“单因素认证”;如果有两个或多个凭证被用于认证,则称为“双因素(Two Factors)认证”或“多因素认证”。一般来说,多要素认证的强度要高于单因素认证,但是在用户体验上,多因素认证或多或少都会带来一些不方便的地方。
9.2 密码的那些事儿
(1)密码必须以不可逆的加密算法,或者是单向散列函数算法,加密后存储在数据库中。
(2)设置密码要考虑密码长度和密码复杂度。
9.3 多因素认证
(1)交易成功的两个条件:密码正确、数字证书。
9.4 Session与认证
(1)当认证成功之后,就需要替换一个对用户透明的凭证。这个凭证,就是SessionID。
(2)Session劫持就是一种通过窃取用户SessionID后,使用该SessionID登录进目标账户的攻击方法,此时攻击者实际上是使用了目标账户的有效Session。如果SessionID是保存在Cookie中的,则这种攻击可以称为Cookie劫持。
(3)在生成SessionID时,需要保证足够的随机性,比如采用足够强的伪随机数生成算法。
9.5 Session Fixation攻击
(1)具体攻击过程是,用户X(攻击者)先获取到一个未经认证的SessionID,然后将这个SessionID交给用户Y去认证,Y完成认证后,服务器并未更新此SessionID的值,所以X可以直接凭借此SessionID登录进Y的账户。
(2)解决Session Fixation的正确做法是,在登录完成后,重写SessionID。
9.6 Session保持攻击
(1)一般的应用都会给session设置一个失效时间,当到达失效时间后,Session将被销毁。
(2)若每个用户只允许拥有一个Session,则攻击者想要一直保持一个Session也是不太可能的。当用户再次登录时,攻击者所保持的Session将被“踢出”。
9.7 单点登录(SSO)
(1)单点登录的英文全称是Single Sign On,他希望用户只需要登录一次,就可以访问所有的系统。
(2)SSO的优点在于风险集中化,就只需要保护好这一个点。
(3)缺点:单点一旦被攻破的话,后果会非常严重,影响的范围将涉及所有使用单点登录的系统。