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安全设计不够导致认证授权有错,还有可能由于系统授权设计与访问控制有错,或者业务逻辑设计有误,导致认证与授权攻击。