0

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

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

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

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

  4. 每当用户向 Web 应用程序发出请求时,关键是在数据库中搜索会话的参考。如果有会话-> 已通过身份验证。

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

注意:所有请求都经过 SSL 加密。

您是否发现此身份验证过程中存在任何缺陷?使用它时可能有什么危险?

谢谢!

埃利亚斯

4

1 回答 1

1

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

  1. 机器人可以在您的服务器上触发具有随机会话 ID 的随机请求,从而导致如此多的会话查找,如果您的会话 ID 可以在检查数据库之前使用算法验证为有效会话 ID,那么您的会话管理可能会在理想情况下不堪重负会更好。
  2. 登录屏幕可能会被具有各种 uid/pwd 组合的机器人点击,这将导致在 DB 上进行多个用户/pwd 搜索。在内存中拥有 LRU uid/pwd 缓存可以解决此问题,并且还可以为来自同一 IP 的多个登录请求提供验证码。

你没有提到的一点是你什么时候会过期会话 - 如果用户没有注销你什么时候会从你的表中清除会话 ID?如果会话 ID 同时从 cookie 中被劫持怎么办?

于 2012-04-18T08:23:57.753 回答