Javascript 除了https安全隧道之外,有没有更安全的方法来保护cookie?

Javascript 除了https安全隧道之外,有没有更安全的方法来保护cookie?,javascript,php,security,cookies,Javascript,Php,Security,Cookies,我有一个应用程序,在该应用程序中,我将auth令牌与每个请求一起发送到服务器,作为请求头中的cookie。此外,我强制应用程序在HTTPS上运行,因此cookie头是加密的。但是,我知道这还不足以让cookie不可访问(XSS)攻击。我想到了HttpOnly选项,但这没有用,因为Javascript无法访问它 是否有其他选项可以更好地保护我在标头请求中发送的cookie?使用基于cookie的身份验证时,HttpOnly标志就是您要查找的标志:当用户登录时,服务器将HttpOnlycookie发

我有一个应用程序,在该应用程序中,我将auth令牌与每个请求一起发送到服务器,作为请求头中的cookie。此外,我强制应用程序在HTTPS上运行,因此cookie头是加密的。但是,我知道这还不足以让cookie不可访问(XSS)攻击。我想到了
HttpOnly
选项,但这没有用,因为Javascript无法访问它


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

使用基于cookie的身份验证时,
HttpOnly
标志就是您要查找的标志:当用户登录时,服务器将
HttpOnly
cookie发送到浏览器,这是JavaScript无法访问的,也不应该被JavaScript访问,唯一重要的部分是浏览器将自动将cookie发送到服务器,以满足与cookie域匹配的每个请求

您需要记住的是,基于cookie的身份验证需要一种额外的机制来保护您的安全

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


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

当使用基于cookie的身份验证时,
HttpOnly
标志就是您要查找的标志:当用户登录时,服务器将
HttpOnly
cookie发送到浏览器,这是JavaScript无法访问的,也不应该被JavaScript访问,唯一重要的部分是浏览器将自动将cookie发送到服务器,以满足与cookie域匹配的每个请求

您需要记住的是,基于cookie的身份验证需要一种额外的机制来保护您的安全

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


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

再次阅读
HttpOnly
的文档。您可能误解了它的功能…请再次阅读
HttpOnly
的文档。你可能误解了它的作用…