有没有办法在https安全隧道旁边更安全地保护cookie?



我有一个应用程序,我将每个请求的身份验证令牌作为标头请求中的cookie发送到服务器。此外,我强制应用程序在HTTPS上运行,因此 cookie 标头是加密的。但是,我知道这还不足以使 cookie 无法访问 (XSS) 攻击。我想到了HttpOnly选项,但这无济于事,因为它无法通过Javascript访问。

我是否可以执行任何其他选项来更好地保护我在标头请求中发送的 cookie?

使用基于 cookie 的身份验证时,HttpOnly标志是您要查找的标志:当用户登录时,服务器将HttpOnly

cookie 发送到浏览器,JavaScript 无法访问,也不应该通过 JavaScript 访问,唯一重要的部分是浏览器会自动将 cookie 发送到服务器,每个请求匹配 cookie 的域。

您需要记住的是,基于 cookie 的身份验证需要一种额外的机制来防止 CSRF。

另一方面,如果您使用的是OpenID Connect或OAuth2身份验证,并希望将访问令牌存储在cookie中,那么是的,您不能使用HttpOnly标志。但是用一些魔法加密饼干也没有意义,因为如果有人可以窃取饼干,他们就会窃取正确加密的饼干,该饼干仍然有效。这里的关键是,你应该保护你网站上的每个输入免受XSS的侵害:如果你有文本输入,你必须过滤输入以防止XSS攻击,对于PHP,你可以看看AntiXSS库。也不要链接到您不信任的 CDN 中的客户端库、图像或其他资源,因为脚本也可以从那里注入。

对于访问令牌,无论您使用什么方法来存储或加密它,访问令牌总是容易使用 XSS,因为您自己的 JavaScript 应用程序需要访问它。这就是为什么访问令牌是并且应该始终是短暂的(最多 1 小时 f.e.)的主要原因。

最新更新