概述
认证与会话管理
- 1、我是谁
- 2、密码的那些事
- 3、多因素认证
- 4、Session与认证
- 5、Session Fixation攻击
- 6、Session保持攻击
- 7、单点登录(SSO)
- 8、总结
1、我是谁
认证是为了认出用户是谁,授权是为了决定用户能做什么。
如果只有一个凭证被用于认证,则称为 “ 单因素认证 ” ;如果有两个或多个凭证被用于认证,则称为 “ 双因素认证 ” 或 ” 多因素认证 “。
2、密码的那些事
(1)一般来说,密码必须以不可逆的加密算法,或者是单向散列函数算法,加密后存储在数据库中。
(2)目前业界比较普遍的做法——在用户注册的时候就已经将密码哈希后保存在数据库中,登陆时验证密码的过程仅仅是验证用户提交的 ” 密码 “ 哈希值,与保存在数据库中的 ” 密码 “ 哈希值是否一致。
(3)为避免密码哈希值泄露,黑客通过彩虹表查询出密码明文,在计算密码明文的哈希值时,增加一个 ” Salt “ 。Salt的使用如下:
MD5(Username+Password+Salt)
Salt应该保存在服务器端的配置文件中。
3、多因素认证
除了密码之外,可增加多因素认证,比如手机动态口令,数字证书,第三方证书等。
4、Session与认证
在用户登录完成时,在服务器端就会创建一个新的会话(Session),会话中会保存用户的状态和相关信息。
为了告诉服务器应该使用哪一个Session,浏览器需要把当前用户持有的SessionID告知服务器。
最常见的做法就是把SessionID加密后保存在Cookie中,因为Cookie会随着HTTP请求头发送,且收到浏览器同源策略保护。
Session劫持 就是一种通过窃取用户SessionID后,使用该SessionID登录进目标账户的攻击方法。如果SessionID保存在Cookie中,则这种攻击可以称为Cookie劫持。
5、Session Fixation攻击
在用户登录网站的过程中,如果登录前后用户的SessionID没有发生变化,则会存在Session Fixation问题。
解决Session Fixation的正确做法是,在登录完成后,重写SessionID。
6、Session保持攻击
应该给Session设置一个失效时间,当达到失效时间,Session将被销毁。
还需要考虑同一个用户可以同时拥有几个有效Session。若每个用户只允许拥有一个Session,则攻击者想要一直保持一个Session也是不太可能的。当用户再次登录时,攻击者所保持的Session将被 “ 踢出 ”。
7、单点登录(SSO)
全称:Single Sign On
它希望用户只需要登录一次,就可以访问所有的系统。
8、总结
在Web应用中,用户登录之后,服务器端通常会建立一个新的Session以跟踪用户的状态。每个Session对应一个标识符SessionID,SessionID用来标识用户身份,一般是加密保存在Cookie中。有的网站也会将Session保存在Cookie中,以减轻服务器端维护Session的压力。
最后
以上就是整齐宝贝为你收集整理的白帽子讲Web安全(六)认证与会话管理1、我是谁2、密码的那些事3、多因素认证4、Session与认证5、Session Fixation攻击6、Session保持攻击7、单点登录(SSO)8、总结的全部内容,希望文章能够帮你解决白帽子讲Web安全(六)认证与会话管理1、我是谁2、密码的那些事3、多因素认证4、Session与认证5、Session Fixation攻击6、Session保持攻击7、单点登录(SSO)8、总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复