《白帽子讲web安全》读书笔记系列7:认证与会话管理

1、认证VS授权 authentication authorization

认证:认出用户是谁;实际上就是一个验证凭证的过程。

授权:决定用户能干什么。

单因素认证:只验证一个凭证

双因素认证:只验证两个凭证

多因素认证:....

 

2、密码:最常见的认证手段

长度考虑:

普通应用6位以上

重要应用8位以上,并考虑双因素认证

 

密码复杂度:

区分大小写

小写字母、大写字母、数字、符号两种以上的组合

不能有连续性字符,如abcd1234

避免重复字符,如aaaa

 

其他:

避免简单单词,如good;

不要使用用户的公开数据或与个人隐私相关的数据,如姓名简写、QQ号码、身份证号码、暱称、电话号码、生日、英文、公司名等

 

黑客破解

老套:暴力破解

新招:简单密码+猜解用户名

 

密码保存:必须以不可逆加密算法或者单向散列的函数算法,加密后存储在数据库中

 

彩虹表:收集尽可能多的密码明文和对应的MD5值,只需要查询到MD5值,就能找到对应明文密码;

应对方案:计算密码明文哈希值时,加入一个salt字符串,增加明文复杂度,salt应善加保存在服务端

 

3、多因素认证

支付宝:支付密码、手机动态口令、数字证书、宝令、支付盾、第三方证书等

 

4、session与认证

密码与认证等手段一般仅用于登录,此后需要采用一个对用户透明的凭证,即sessionID。

最常见的做法是把sessionID加密保存在Cookie,随HTTP请求头发送到服务端;

Cookie泄露的途径:XSS攻击、网络Sniff、本地木马窃取;

对于通过XSS漏洞窃取Cookie的攻击,通过给Cookie标记httponly,可以有效缓解。

SessionID还可以保存在URL中,作为请求的一个参数,不安全。

生成sessionID时,需要保证足够的随机性。

 

5、Session Fixation攻击

两个用户先后登录网站,而用户的SessionID没有发生变化,则会存在Session Fixation问题。

解决办法:登录完成后,重写SessionID。

 

6、Session保持攻击

SessionID是有生命周期的,当用户长时间未活动或点击退出后,服务器将销毁sessionid;

Cookie也有失效时间;

某些应用可以通过不停的发起访问请求,让session一直活下去。

Cookie的expire时间是完全可以有客户端控制的,篡改这个时间,并使之永久有效,就有可能获得一个永久有效的Session。

解决办法:

一定时间后,强制销毁Session

当用户IP、useragent等信息发生变化时,强制销毁session,要求用户重新登录;

限制同一用户可以拥有的有效session数。

 

7、单点登录(SSO:Single Sign On)

用户只需要登录一次,就可以访问所有的系统。

SSO的优点:风险集中化,只需要保护这个一共点;

SSO的缺点:风险集中化,一旦这个点被攻破,后果将非常严重。

OpenID目前互联网上最为开放和流行的单点登录系统。

每个用户将拥有一个唯一的URI,用户登录网站时,只需要提交其OpenID(用户的URI)以及OpenID的提供者,网站就会将用户重定向到OpenID的提供者进行认证,认证完成后再重定向回网站。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章