【问题标题】:Is my authentication approach secure / need for improvement?我的身份验证方法是否安全/需要改进?
【发布时间】:2012-04-18 08:12:15
【问题描述】:
在我的网络应用程序中,我通过以下方式处理身份验证:
用户输入他的电子邮件和密码
在数据库中搜索用户,匹配bcrypt加密密码?
如果是这样,新的会话记录将存储在数据库中,其中包含用户 ID 和 128 位随机密钥。此外,此密钥作为“安全”、“仅限 http”cookie 存储在客户端上。
每当用户向 Web 应用发出请求时,关键是在数据库中搜索会话的参考。如果有会话 -> 已通过身份验证。
会话在一定时间后被删除(例如 3 小时)
注意:所有请求都经过 SSL 加密。
您是否发现此身份验证过程中存在任何缺陷?使用它时可能有什么危险?
谢谢!
埃利亚斯
【问题讨论】:
标签:
security
session
authentication
cookies
【解决方案1】:
我可以在这里看到两种 DoS 攻击场景。
- 机器人可以在您的服务器上触发带有随机会话 ID 的随机请求,从而导致会话查找过多,如果您的会话 ID 在被检查之前可以使用算法验证为有效会话 ID,那么理想情况下您的会话管理可能会不堪重负数据库会更好。
- 登录屏幕可能会被具有各种 uid/pwd 组合的机器人点击,这将导致在 DB 上进行多个用户/pwd 搜索。在内存中拥有 LRU uid/pwd 缓存可以解决此问题,并且还可以为来自同一 IP 的多个登录请求提供验证码。
你没有提到的一点是你什么时候会过期会话 - 如果用户没有注销你什么时候会从你的表中清除会话 ID?如果会话 ID 同时从 cookie 中被劫持怎么办?