有没有办法在https安全隧道旁更加安全的cookie?

时间:2018-01-29 08:30:21

标签: javascript php security cookies

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

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

1 个答案:

答案 0 :(得分:2)

使用基于cookie的身份验证时,HttpOnly标志是您正在寻找的标志:当用户登录时,服务器将HttpOnly cookie发送到浏览器,即JavaScript无法访问,JavaScript无法访问,唯一重要的部分是浏览器会自动将cookie发送到服务器,以获取与cookie域匹配的每个请求。

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

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

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