【发布时间】:2017-01-30 03:40:34
【问题描述】:
在我的网络项目中,setting to turn on httpOnlyCookies 不存在。默认为假。此外,代码中也没有将 cookie 设置为 HttpOnly 的地方。但是,当我浏览到该站点时,我可以看到 ASP.NET_Session cookie 正在作为 HttpOnly 传递。它是如何设置为 HttpOnly 的?
【问题讨论】:
在我的网络项目中,setting to turn on httpOnlyCookies 不存在。默认为假。此外,代码中也没有将 cookie 设置为 HttpOnly 的地方。但是,当我浏览到该站点时,我可以看到 ASP.NET_Session cookie 正在作为 HttpOnly 传递。它是如何设置为 HttpOnly 的?
【问题讨论】:
ASP.NET 会话 cookie 仅是 HTTP,无论您的问题中链接到的 httpOnlyCookies 设置如何,因为它被烧录到 ASP.NET 中。你不能覆盖它。
如果您深入了解 System.Web 程序集中的 System.Web.SessionState.SessionIDManager 类,则用于创建 ASP.NET 会话 cookie 的代码如下所示:
private static HttpCookie CreateSessionCookie(string id)
{
HttpCookie cookie = new HttpCookie(Config.CookieName, id);
cookie.Path = "/";
cookie.HttpOnly = true; // <-- burned in
return cookie;
}
【讨论】:
它是 HttpOnly,因此客户端无法使用 JavaScript 修改会话 cookie。
【讨论】: