繁体   English   中英

检查 JavaScript 中是否存在 httponly cookie

[英]Check if httponly cookie exists in Javascript

正如问题所说,如果 cookie 是 HttpOnly,你能找出 Javascript 中是否存在 cookie 吗? 我不需要访问它里面的信息,只要知道它有一个。

关于这种情况的更多信息是,最初有一个 Web 服务器使用 cookie 作为身份验证令牌,并且由于客户端不使用它而将其设置为 httponly,因此它增加了安全性。

但是现在需要进行更改,其中客户端需要知道它是否具有 cookie(因为该站点可以在用户未登录的情况下工作,但是如果他们已登录(auth cookie 将存在),则该站点需要显示某些事情并隐藏其他人。

Web 服务器上还有其他安全预防措施,因此在客户端具有不正确的 auth cookie 的情况下没有任何危害,但该站点使其看起来像他们已登录,因为它会删除 cookie 并拒绝用户.

如果无法设置,您可以通过尝试使用 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;
  return document.cookie.indexOf(cookiename + '=') == -1;
}

我有同样的问题。 我通过服务器设置另一个cookie而不是httponly来解决它,每次刷新httponly会话cookie时,使用相同的max-age并且没有敏感数据。 现在,如果其中一个存在,另一个同样如此,并且客户端可以知道 httponly 对应物是否存在。

不。请参阅下面的 Rob 评论。

看到这个,你可能已经看到了 - http://en.wikipedia.org/wiki/HTTP_cookie#Secure_and_HttpOnly

HttpOnly cookie 不能通过非 HTTP 方法访问,例如通过 JavaScript 调用(例如,引用“document.cookie”)...

编辑:删除了undefined响应,我写了一个你可能没有使用的脚本:)

每当您需要检查 cookie 是否存在时,您可以向需要身份验证的服务器发送请求并检查响应。 如果它类似于401 Unauthorized403 Forbidden ,则该 cookie 可能不存在,您可以提示用户登录。

另一方面,如果 cookie 存在,它将由浏览器自动发送,从而产生200 OK响应。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM