.Net 应用程序中的安全标志未设置为 Cookie

Posted

技术标签:

【中文标题】.Net 应用程序中的安全标志未设置为 Cookie【英文标题】:Secure flag not set to Cookies in .Net application 【发布时间】:2018-02-24 05:36:26 【问题描述】:

我在我的 Web.Config 和 Global.asax.cs 文件中包含以下代码行。仍然当我在浏览器中使用开发人员工具时,我可以看到安全标志未设置为以下 Cookie。

还在我的 IIS 中配置了 SSLSettings(选中的复选框需要 SSL)。

我想为所有 Cookie 设置 Secure 属性,不仅要接收,还要设置已发送 cookie。请有任何建议。

在 Web.config 中:

<httpCookies requireSSL="true"/>

在 Global.asax.cs 中:

protected void Application_EndRequest(object sender, EventArgs e)

    if (Request.IsSecureConnection == true && HttpContext.Current.Request.Url.Scheme == "https")
    
        Request.Cookies["ASP.NET_SessionID"].Secure = true;
        if (Request.Cookies.Count > 0)
        
            foreach (string s in Request.Cookies.AllKeys)
            
                Request.Cookies[s].Secure = true;
            
        

        Response.Cookies["ASP.NET_SessionID"].Secure = true;
        if (Response.Cookies.Count > 0)
        
            foreach (string s in Response.Cookies.AllKeys)
            
                Response.Cookies[s].Secure = true;
            
        
    


在浏览器中:

【问题讨论】:

在 Application_BeginRequest 或 Session_Start 中尝试相同的代码。 @G01 - 我已按照您的建议使用 Global.asax.cs 文件中的代码。但同样的结果。还有其他设置安全的方法吗? 在 Web.config 文件中将 HttpOnlyCookie 设置为 true。 @G01 - 不走运。 在 Web.config 文件中,检查 lockItem 或 lockattribute。如果是这样,请删除并在浏览器中再次检查。 【参考方案1】:

有两种方法,web.config 中的一个 httpCookies 元素允许您打开 requireSSL,它只传输所有 cookie,包括 SSL 中的会话以及表单身份验证,但如果您在 httpcookies 上打开 SSL,您还必须打开它内部表单配置也是如此。

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

【讨论】:

以上是关于.Net 应用程序中的安全标志未设置为 Cookie的主要内容,如果未能解决你的问题,请参考以下文章

甚至通过 HTTP 在 RoR 中的会话 cookie 上设置“安全”标志

如何在 ASP.NET MVC 网站中为 cookie 设置“安全”标志?

iOS 11 UITableView isEditing 标志未正确设置

没有设置安全标志和 HttpOnly 标志的 Cookie

sh -z标志确定变量是否未设置。下面,$ {var + x}是一个参数扩展,如果未设置var,则计算结果为空,

在 PHP 中的 PHPSESSID cookie 上设置 httpOnly 和安全