Gro*_*fit 9 javascript cookies httponly
正如问题所说,如果它是HttpOnly,你能否知道Javascript中是否存在cookie?我不需要访问其中的信息,只知道它有一个.
关于这种情况的更多信息是,最初有一个使用cookie作为身份验证令牌的Web服务器,并且它被设置为httponly,因为它没有被客户端使用,所以它被添加到安全性中.
但是现在需要进行更改,客户端需要知道它是否有cookie(因为站点可以在没有用户登录的情况下工作,但如果他们已登录(auth cookie将存在),则站点需要显示某些事物和隐藏他人.
Web服务器上还有其他安全预防措施,因此在客户端具有不正确的身份验证cookie的情况下没有任何损害,但该网站使其看起来像是已登录,因为它会删除cookie并拒绝用户.
Edu*_*oço 14
我有同样的问题。我通过服务器设置另一个cookie而不是httponly来解决它,每次刷新httponly会话cookie时,使用相同的max-age并且没有敏感数据。现在,如果其中一个存在,另一个同样如此,并且客户端可以知道 httponly 对应物是否存在。
Anu*_*Das 13
每当您需要检查 cookie 是否存在时,您可以向需要身份验证的服务器发送请求并检查响应。如果它类似于401 Unauthorized或403 Forbidden,则 cookie 可能不存在,您可以提示用户登录。
另一方面,如果 cookie 存在,浏览器会自动发送该 cookie,从而产生响应200 OK。
您可以通过尝试使用javascript将其设置为无法设置的值来间接检查它是否存在,然后必须存在HTTP Only Cookie(否则用户将阻止Cookie)。
function doesHttpOnlyCookieExist(cookiename) {
var d = new Date();
d.setTime(d.getTime() + (1000));
var expires = "expires=" + d.toUTCString();
document.cookie = cookiename + "=new_value;path=/;" + expires;
if (document.cookie.indexOf(cookiename + '=') == -1) {
return true;
} else {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
[2018年2月6日更新]在Firefox上不起作用(在Chrome&Edge上可能有效,也许在其他系统上也可以)
不.请看下面Rob的评论.
看到这个,您可能已经看过了 - http://en.wikipedia.org/wiki/HTTP_cookie#Secure_and_HttpOnly
无法通过非HTTP方法访问HttpOnly cookie,例如通过JavaScript调用(例如,引用"document.cookie")...
编辑:删除了undefined响应,我写了一个你可能没有使用的脚本:)