OWASP列举的Web应用程序十大安全漏洞 - 失效的身份认证和会话管理

失效的身份认证和会话管理

1、原理

身份认证:最常见的是登录功能,往往是提交用户名和密码,在安全性要求更高的情况下,有防止密码暴力破解的验证码,基于客户端的证书,物理口令卡等等。

会话管理:HTTP本身是无状态的,利用会话管理机制来实现连接识别。身份认证的结果往往是获得一个令牌,通常放在cookie中,之后对用户身份的识别根据这个授权的令牌进行识别,而不需要每次都要登陆。

2、典型案例

案例1:机票预订应用程序支持URL重写,把会话ID放在URL里:

http://example.com/sale/saleitems;jsessionid=2P0OC2JNDLPSKHCJUN2JV?dest=Hawaii

该网站一个经过认证的用户希望让他朋友知道这个机票打折信息。他将上面链接通过邮件发给他朋友们,并不知道自己已经泄露了自己的会话ID。当他的朋友们使用上面的链接时,他们将会使用他的会话和信用卡。

案例2:应用程序超时设置不当。用户使用公共计算机访问网站。离开时,该用户没有点击退出,而是直接关闭浏览器。攻击者在一个小时后能使用相同浏览器通过身份认证。

案例3:内部或外部攻击者进入系统的密码数据库。存储在数据库中的用户密码没有被加密,所有用户的密码都被攻击者获得。

3、防范方法

  1. 强制使用一定复杂度的密码且加密存储,登录验证使用用户名、密码、后台验证码三者结合,验证码具有时效性,登录失败后的提示信息模糊化,不得提示具体是用户名错误还是密码错误。
  2. 登录后的接口均需要携带认证后的token方可正确访问,token具有时效性,超时将会失效,时效时长设置合理。
  3. 不需要认证的接口,也需要采用公司内部制定的token生成方法,前端工程师调用接口时携带,且前端代码必须被混淆。

你可能感兴趣的:(java,web安全,互联网,安全,java)