我的身份验证方法是否安全/需要改进?

时间:2012-04-18 08:12:16

标签: security session authentication cookies

在我的网络应用上,我按以下方式处理身份验证:

  1. 用户输入了他的电子邮件和密码

  2. 在db中搜索用户,匹配bcrypt加密密码?

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

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

  5. 会话在一定时间后删除(例如3小时)

  6. 注意:所有请求都是SSL加密的。

    您是否认为此身份验证过程存在任何缺陷?使用它可能会有什么危险?

    谢谢!

    利亚

1 个答案:

答案 0 :(得分:1)

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

  1. 机器人可以在您的服务器上使用随机会话ID发送随机请求,导致会话管理如此多,以至于如果您的会话ID在使用算法之前可以使用算法验证为有效的会话ID,那么您的会话管理可能会不堪重负数据库会更好。
  2. 登录屏幕可以被具有各种uid / pwd组合的机器人击中,这将导致在DB上进行多次用户/密码搜索。在内存中具有LRU uid / pwd缓存可以解决此问题,并且还可以针对来自同一IP的多个请求进行登录验证。
  3. 您没有触及的一点是,您何时会使会话过期 - 如果用户没有注销,您何时会从表中清除会话ID?如果会话ID同时从cookie中被劫持怎么办?