3.1.2 认证与授权攻击产生原因

1.Cookie安全

Cookie中记录着用户的个人信息、登录状态等。使用Cookie欺骗可以伪装成其他用户来获取隐私信息等。

常见的Cookie欺骗有以下几种方法:

1)设置Cookie的有效期。

2)通过分析多账户的Cookie值的编码规律,使用破解编码技术来任意修改Cookie的值达到欺骗目的,这种方法较难实施。

3)结合XSS攻击上传代码获取访问页面用户Cookie的代码,获得其他用户的Cookie。

4)通过浏览器漏洞获取用户的Cookie,这种方法需要非常熟悉浏览器。

防范措施如下:

1)不要在Cookie中保存敏感信息。

2)不要在Cookie中保存没有经过加密的或者容易被解密的敏感信息。

3)对从客户端取得的Cookie信息进行严格校验,如登录时提交的用户名和密码正确性。

4)记录非法的Cookie信息进行分析,并根据这些信息对系统进行改进。

5)使用SSL来传递Cookie信息。

6)结合Session验证对用户访问授权。

7)及时更新浏览器漏洞。

8)设置httponly增强安全性。

9)实施系统安全性解决方案,避免XSS攻击。

2.Session安全

服务器端和客户端之间是通过Session来连接沟通的。当客户端的浏览器连接到服务器后,服务器就会建立一个该用户的Session。每个用户的Session都是独立的,并且由服务器来维护。每个用户的Session是由一个独特的字符串来识别的,称为SessionID。用户发出请求时,所发送的http表头内包含SessionID的值。服务器使用http表头内的SessionID来识别是哪个用户提交的请求。一般SessionID传递方式:URL中指定Session或存储在Cookie中,后者广泛使用。

会话劫持是指攻击者利用各种手段来获取目标用户的SessionID。一旦获取到Ses-sionID,那么攻击者可以利用目标用户的身份来登录网站,获取目标用户的操作权限。

攻击者获取目标用户SessionID的方法:

1)暴力破解:尝试各种SessionID,直到破解为止。

2)计算:如果SessionID使用非随机的方式产生,那么就有可能计算出来。

3)窃取:使用网络截获、XSS、CSRF攻击等方法获得。

防范措施如下:

1)定期更改SessionID,这样每次重新加载都会产生一个新的SessionID。

2)只从Cookie中传送SessionID结合Cookie验证。

3)只接受服产生的SessionID。

4)只在用户登录授权后生成Session或登录授权后变更Session。

5)为SessionID设置Time-Out时间。

6)验证来源,如果Refer的来源是可疑的,就刪除SessionID。

7)如果用户代理user-agent变更时,重新生成SessionID。

8)使用SSL连接。

9)防止XSS、CSRF漏洞。

除了Cookie或Session安全设计不够导致认证授权有错,还有可能由于系统授权设计与访问控制有错,或者业务逻辑设计有误,导致认证与授权攻击。