有没有办法用 JavaScript 读取安全的 cookie?
我尝试使用document.cookie
并且就我在这篇关于安全 cookie 和 HttpOnly 标志的文章中看到的那样,我无法通过这种方式访问安全 cookie。
任何人都可以提出解决方法吗?
有没有办法用 JavaScript 读取安全的 cookie?
我尝试使用document.cookie
并且就我在这篇关于安全 cookie 和 HttpOnly 标志的文章中看到的那样,我无法通过这种方式访问安全 cookie。
任何人都可以提出解决方法吗?
设置HTTPOnly标志时,不同的浏览器启用不同的安全措施。例如 Opera 和 Safari 不会阻止 javascript 写入 cookie。但是,在所有主要浏览器的最新版本上始终禁止阅读。
但更重要的是 ,你为什么要读取HTTPOnly
cookie?如果您是开发人员,只需禁用该标志并确保您针对 xss 测试您的代码。我建议您尽可能避免禁用此标志。该HTTPOnly
标志和“安全标志”(这迫使cookie被发送通过HTTPS)应始终设置。
如果您是攻击者,那么您想劫持会话。但是有一种简单的方法可以劫持会话,尽管有HTTPOnly
标志。您仍然可以在不知道会话 ID 的情况下参加会话。MySpace Samy 蠕虫就是这样做的。它使用XHR读取CSRF令牌,然后执行授权任务。因此,攻击者几乎可以做登录用户可以做的任何事情。
人们过于相信HTTPOnly
flag,XSS仍然可以被利用。您应该在敏感功能周围设置障碍。如更改密码提交,应要求当前密码。管理员创建新帐户的能力应该需要验证码,这是一种CSRF 预防技术,不能被XHR轻易绕过。
HttpOnly cookie 的全部意义在于它们不能被 JavaScript 访问。
您的脚本读取它们的唯一方法(除了利用浏览器错误)是在服务器上有一个协作脚本,该脚本将读取 cookie 值并将其作为响应内容的一部分回显。但是,如果您可以并且愿意这样做,那么首先为什么要使用 HttpOnly cookie?
你不能。脚本无法访问 Httponly cookie 的用途。