2012-04-18 69 views
0

在我的web应用程序我处理身份验证方式如下:我的身份验证方法是否安全/需要改进?

  1. 用户输入自己的电子邮件地址和密码

  2. 搜索用户在数据库中,比赛bcrypt加密的密码?

  3. 如果是这样,一个新的会话记录被存储在数据库中,它是用户ID和一个128位的随机密钥。此密钥也以“安全”,“仅限http”cookie的形式存储在客户端。

  4. 每当用户向Web应用程序发出请求时,该键就是在db中搜索会话的引用。如果有一个会话 - >认证。

  5. 会话是一定量的时间(例如3小时)

注后删除:所有请求都是SSL加密。

您是否发现此验证过程中存在任何缺陷?在处理这件事时会有什么危险?

谢谢!

Elias

回答

1

我可以在这里看到两个DoS攻击场景。

  1. 一个机器人可以在你的服务器触发与随机会话ID的随机请求,导致这么多的会议查找您的会话管理可以变得不知所措理想的,如果你的会话ID可以被验证是使用前一种算法有效的会话ID被检查对数据库它会更好。
  2. 登录屏幕可以通过各种uid/pwd组合的机器人命中,这将导致在数据库中进行多次用户/密码搜索。在内存中使用LRU uid/pwd缓存可以解决此问题,并且还可以为来自相同IP的多个请求进行登录验证。

您没有触及的一点是,您何时会过期会话 - 如果用户未注销何时会从表中清除会话ID?如果在此期间会话ID被从cookie中劫持,会怎么样?

相关问题