1

我正在管理一个服务器,并且一直在研究为我的 cookie 设置 HttpOnly。

虽然我没有在服务器端和客户端都与之交互的任何 cookie,但为所有 cookie 启用此选项会阻止客户端生成的 cookie 在后续页面加载时被访问吗?

为了澄清,这将被设置为服务器选项。我正在使用 Apache,所以这将类似于: Header edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure 在 Apache 配置中。

此外,该问题基于使用 cookie 进行数据存储。LocalStorage不在问题的上下文中,即使它是存储纯粹在客户端使用的数据的更好方法。

4

1 回答 1

2

为所有 cookie 启用此选项会阻止客户端生成的 cookie 在后续页面加载时被访问吗?

是的。JS 无法访问服务器响应标记为 cookie 的值,HttpOnly也无法向它们写入新值。

尽管如此,我还没有发现当 JS 尝试写入一个时究竟会发生什么,浏览器似乎用本地存储的一个只能由客户端脚本访问的一个来隐藏 http-sent 。不过,我不会依赖这种行为,写入可能会被简单地忽略。在较旧的浏览器中,似乎存在写入仅 http cookie 的错误。

但是,无法启用HttpOnly所有cookie。您必须在每个交换的 cookie 上单独设置它,因此仅对服务器使用该标志发送到客户端的那些 cookie 启用此选项。

因此,如果您将 Apache 配置为在所有传出 cookie 上启用该标志,它仍然取决于您的服务器应用程序是否镜像客户端发送的所有 cookie。通常它不会,并且只发送它想要设置的 cookie(对于它自己,要在服务器上使用)。

于 2015-07-02T14:42:54.327 回答