我试图找出使用基于会话ID认证VS基于Cookie认证认证会话ID VS饼干
就的优点和缺点,我可以在基于Cookie认证见
- 用户提交登录请求发送他们的凭据
- 凭据针对数据库检查
- cookie将与用户的细节设置
- 这将通过https完成,cookies将被加密。
- 在.NET中,如果这是authcookie用户身份将被设置
- 的DB是打了一次,并且后续调用只检查身份验证cookie的
在基于会话的认证的情况下
- 用户提交登录请求发送其凭据
- 凭据检查数据库
- 将生成会话ID并也存储在一个数据库
- cookie将与用户的详细信息,并生成会话ID
- 后续调用会比较反对一个会话ID在数据库
- 该DB命中每次
问题
是否有任何理由更喜欢一个比另一个?基于cookie的安全性是否较低(即使您对它们进行了加密和签名)?基于会话的性能是否因为在每次调用期间碰到数据库而变得更糟?我看到几个站点倾向于某种方式,但无法清楚地了解使用哪种方法。任何讨论/建议将不胜感激。
道歉延迟答复。目前,我正在审核一些实际上在用户登录时创建会话密钥的代码(Java),并将其作为cookie存储,并且每次调用受保护的服务时,都会获取会话密钥并检查数据库以查看会话是否处于活动状态。这似乎是一个不同于asp窗体auth的设计,我们每次都不打db。会话和检查数据库的方法似乎效率低下。我是这么想的吗? – user275157
我的意见:通过会话检查来查询每个请求并不是什么大问题。会话表本身将需要仔细索引和优化以避免瓶颈。 – Brett
谢谢。而且可以肯定 - 我认为上述方法不一定比表单认证方法更安全吗? – user275157