小言_互联网的博客

【Web安全】认证与会话管理

341人阅读  评论(0)

目录

1. 认证与授权

2. 密码

3. 多因素认证

 4. Session与认证

5. Session Fixation攻击

6. Session 保持攻击

7. 单点登录SSO


1. 认证与授权

认证的目的是为了认出用户是谁,而授权的目的是为了决定用户能够做什么。

认证实际上是一个验证凭证的过程。

如果只有一个凭证被用于认证,则称为“单因素认证”

如果有两个或多个凭证被用于认证,则称为“多因素认证”

2. 密码

密码的优点是成本低,使用起来方便,但缺点是其安全性较弱,可能会被猜解

目前黑客常用的暴力破解的手段,不是破解密码,而是利用弱口令猜解用户名,直到发现一个使用弱口令的账户为止。 

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

在用户注册时就将密码进行哈希(MD5或SHA-1)后保存至数据库,用户登陆时将用户提交的密码进行相同算法的哈希,再将该哈希值与数据库中的密码哈希值进行比较。 

目前黑客破解MD5的一种方法是“彩虹表”,表内收集尽可能多的密码明文与明文对应的MD5值,这样只需要查询到MD5值就可以知道对应的明文。

为此引入了加盐哈希,盐值Salt增强了密码的复杂度。

3. 多因素认证

如果只有密码,安全性太低,所以大多数平台都会使用双因素认证或多因素认证。

例如手机动态口令、数字证书、支付盾、第三方证书……使得认证的过程更加安全。

 4. Session与认证

当用户登录后,在服务端创建一个新的会话(Session),会话中保存用户的状态和相关信息。服务器维护所有在线用户的Session,此时的认证,只需要知道是哪个用户在浏览当前页面即可。

为了告诉服务器应该使用哪一个Session,浏览器需要把当前用户持有的SessionID告知服务器。

最常见的做法就是将SessionID加密后保存在Cookie中,因为Cookie会随着HTTP请求头发送,且受到浏览器同源策略的保护。

Session劫持就是通过窃取用户的SessionID,使用该SessionID登录目标账户进行攻击的方法,如果SessionID保存在Cookie中,则称为Cookie劫持。

SessionID还可以保存在URL中作为请求的一个参数,但是安全性很低。(很多手机浏览器不支持Cookie,就只能将SessionID作为URL参数)

5. Session Fixation攻击

在用户登录网站的过程中,如果SessionID没有发生变化,则会存在Session Fixation问题。

用户X获取到一个未经认证的SessionID,将其交给用户Y去认证,Y完成认证后,服务器没有更新此SessionID的值(注意是未改变SessionID而不是未改变Session),所以X可以直接凭借SessionID登录Y的账户。

如果SessionID保存在URL中,只要攻击者诱使用户打开这个URL,在该用户登陆完成后,黑客就可以直接通过此URL进入用户账户。

想要防止Session Fixation攻击,在登陆完成后,重写SessionID。 

6. Session 保持攻击

保持该Session一直不失效,就可能一直成为攻击者的后门。

攻击者可以通过不停地发起访问请求(不停刷新页面、发送带有自定义Cookie头的HTTP包),让Session一直活下去。

在Web开发中,网站访问量如果比较大,维护Session可能会给网站带来巨大负担。因此,有一种做法,就是服务器端不维护Session,把Session放在Cookie中加密保存。当浏览器访问网站时,会自动带上Cookie,服务器端只需要解密Cookie即可得到当前用户的Session。

Cookie的Expire标签可以控制Session的失效时间,且这个时间完全由客户端控制。篡改这个世界使其永久有效,就可以得到一个永久有效的Session,服务器端无法察觉。

攻击者甚至可以为Session Cookie增加一个Expire时间,使得原本会浏览器关闭就失效的Cookie持久化地保存在本地,变成一个第三方Cookie。

7. 单点登录SSO

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

SSO的优点在于风险集中化,只需要保护好这一个点。

SSO的缺点在于风险集中,这个点一旦被攻破全盘崩溃。

目前网上最为流行和开放的单点登录系统是OpenID。它使用URL作为用户的身份标识,每个用户拥有唯一的URL。

 在使用OpenID时,第一步是向网站提供OpenID。

 第二部,网站重定向到OpenID的提供者进行身份认证。

第三步,用户将在OpenID的提供者网站登录,并重定向回网站。 


转载:https://blog.csdn.net/m0_51683653/article/details/128322814
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场