1、我是谁
认证是为了认出用户是谁,授权是为了决定用户能做什么。
如果只有一个凭证被用于认证,则称为 “ 单因素认证 ” ;如果有两个或多个凭证被用于认证,则称为 “ 双因素认证 ” 或 ” 多因素认证 “。
2、密码的那些事
(1)一般来说,密码必须以不可逆的加密算法,或者是单向散列函数算法,加密后存储在数据库中。
(2)目前业界比较普遍的做法——在用户注册的时候就已经将密码哈希后保存在数据库中,登陆时验证密码的过程仅仅是验证用户提交的 ” 密码 “ 哈希值,与保存在数据库中的 ” 密码 “ 哈希值是否一致。
(3)为避免密码哈希值泄露,黑客通过彩虹表查询出密码明文,在计算密码明文的哈希值时,增加一个 ” Salt “ 。Salt的使用如下:
MD5(Username+Password+Salt)
Salt应该保存在服务器端的配置文件中。
3、多因素认证
除了密码之外,可增加多因素认证,比如手机动态口令,数字证书,第三方证书等。
4、Session与认证
在用户登录完成时,在服务器端就会创建一个新的会话(Session),会话中会保存用户的状态和相关信息。
为了告诉服务器应该使用哪一个Session,浏览器需要把当前用户持有的Sessio