【问题标题】:How is HttpOnly get set for ASP.NET_SessionId cookie?如何为 ASP.NET_SessionId cookie 设置 HttpOnly?
【发布时间】:2017-01-30 03:40:34
【问题描述】:

在我的网络项目中,setting to turn on httpOnlyCookies 不存在。默认为假。此外,代码中也没有将 cookie 设置为 HttpOnly 的地方。但是,当我浏览到该站点时,我可以看到 ASP.NET_Session cookie 正在作为 HttpOnly 传递。它是如何设置为 HttpOnly 的?

【问题讨论】:

    标签: asp.net session cookies


    【解决方案1】:

    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;
    }
    

    【讨论】:

    • 在此处找到文档:msdn.microsoft.com/en-us/library/aa480476.aspx"HttpOnly。此属性指定客户端脚本是否可以访问 cookie。在 ASP.NET 2.0 中,此值始终设置为 true。"
    • @dev - 我只是挖到 System.Web.dll 程序集来看看 :)
    • 它下面的部分也很重要。较旧的浏览器不支持 HttpOnly,可能会忽略 cookie 或忽略属性,后者仍然会使您的网站容易受到 XSS 攻击。
    • @Stack0verflow - 这个问题和答案是关于 会话 cookie,而不是常规 cookie。 Session cookie 始终是 HTTP Only,它被刻录到框架代码中。
    • @Stack0verflow - 请参阅stackoverflow.com/a/6190050/419(54 票赞成的答案)。除了 cookie 将仅通过 SSL 传输之外,您不会看到 cookie 发生任何特殊情况(据我所知)。
    【解决方案2】:

    它是 HttpOnly,因此客户端无法使用 JavaScript 修改会话 cookie。

    【讨论】:

    • 正确。我知道那部分。我将我的问题从“为什么”改写为“它是如何设置的?”
    猜你喜欢
    • 2015-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-20
    • 2017-02-04
    • 2016-06-04
    • 2020-03-19
    相关资源
    最近更新 更多