使用Cookie进行会话身份验证:安全问题

时间:2019-01-17 22:41:59

标签: security session authentication cookies

我有一个简单的“会话身份验证”机制:

  • 每次用户登录会话时,都会在数据库服务器端创建该会话,并将其会话ID设置为对客户端的“会话cookie”加密
  • 注销或关闭浏览器实例时,会话将被删除或无效

我已阅读并理解,通过窃取Cookie来加密活动会话中的会话ID的人会窃取另一身份,因此,不应使用永久cookie。

仍然,即使我使用的cookie的有效期很短,盗窃仍然可能在其中发生。还有其他步骤可以避免此问题吗? 仅使用较短的到期日期(如果是这样,什么是适当的时间框架?)是合法的,还是有其他补充技术可以解决此问题?

1 个答案:

答案 0 :(得分:0)

会话cookie的最佳做法是不设置过期时间,以使其对浏览器会话有效。如果设置了到期时间,则cookie将变为永久性,将被存储在客户端的磁盘上,依此类推-这样会增加总体风险。

您是正确的,任何拥有cookie的人都可以冒充用户。为避免这种情况,您希望将cookie设置为httpOnly,以避免Javascript访问(XSS)和secure,以便仅通过https发送。

尽管有很多方法可以纠正会话管理,但对会话ID进行加密似乎没有多大意义。加密的目的是什么?会话ID应该只是一个较大的随机数(可以编码为较短的字符串,但仍然是),无需加密。

关于会话管理的一般建议是不要自己实现它。陷阱太多了,几乎所有框架(或语言)都有可靠的实现,您可以合理地安全地使用它。很难避免所有潜在的漏洞。