7

在我的 ASP.NET Web 应用程序中,我通过将以下条目添加到 web.config 进行了以下更改以使 ASP.NET_SessionID 和 .ASPXAUTH Cookie 安全

<httpCookies httpOnlyCookies="true" requireSSL="true" />

并添加以下标签

<forms requireSSL ="true" /> 

但我的问题是,从服务器接收到的 Cookies(网络->Cookies->Direction 列的值为接收)已将 Secure 和 HttpOonly 标志设置为 true。当我使用 IE 11 开发工具进行调试时找到了信息,但是发送到服务器的 cookie 数据(网络-> Cookies-> 方向列的值为已发送)没有任何安全或 HttpOnly 标志设置为 true。

这是默认行为吗?如果是这样,为什么发送到服务器的数据没有设置 Secure 和 HttpOnly 标志?除了上述对配置文件所做的更改之外,如何设置它。

4

1 回答 1

10

Cookie 标志,如 Secure 和 HttpOnly,仅从服务器发送到客户端。你永远不会在交通中看到他们走另一条路。如果您想确保 cookie 是安全的,请让浏览器通过 HTTP(而不是 HTTPS)发出请求,并查看 cookie 是否仍然存在(它不应该存在)。如果要确保 cookie 是 HttpOnly,请在浏览器中打开您的站点,然后document.cookie在开发工具中检查使用 JS 控制台的值;您应该看到您拥有的任何非 httponly cookie,但没有 httponly cookie。

Cookie 本质上是客户端的东西。它们是服务器告诉客户端“每次您向我提出请求时,都包含这些信息”的一种方式。安全标志将其修改为“每次您通过安全连接向我发出请求时,请包含此信息(但永远不要通过不安全的连接泄露它)”。一个符合标准的用户代理——也就是说,一个网络浏览器——应该遵守这些指令。但是,没有其他等效指令;服务器根本不需要对客户端发送的 cookie 做任何事情,并且没有“客户端在服务器上设置 cookie”相当于服务器可以在客户端上设置 cookie 的方式。指令(包括 Secure、HttpOnly、Domain、Expires 等。

于 2014-10-18T07:36:28.833 回答