ASPXAUTH Cookie的安全标志

Ana*_*eek 9 security forms-authentication asp.net-mvc-4

我们有一个面向外部的应用程序,由外部安全公司进行渗透测试.应用程序已在ASP.NET MVC4上开发并在IIS8/Windows 2012 Server上运行.

报告的漏洞之一是ASPXAUTH不安全.当我检查cookie检查器时,有一些带有安全标志的cookie.但ASPXAUTH不是其中之一.

我做了一些研究,并在web.config上设置了下面这些标志

<forms loginUrl="~/Account/Login" timeout="2880"  requireSSL=""  name="AppName" />
Run Code Online (Sandbox Code Playgroud)

<httpCookies httpOnlyCookies="true" requireSSL="true" />
Run Code Online (Sandbox Code Playgroud)

尽管有这些设置,但身份验证cookie未标记为安全.我认为这些标志应该足以将应用程序cookie标记为安全,但是还有一些其他cookie也没有标记为安全.我不太关心它们,因为它们不包含任何敏感信息.但我想将ASPXAUTH标记为安全.

我的问题是,

  1. 在web.config上设置这些标志,ASPXAUTH没有安全标志是否存在安全问题?
  2. 如果是这样,你能否告诉我将其标记为安全的正确方法.

谢谢.

Ana*_*eek 8

我发现这段代码使我的身份验证cookie安全.我不记得这个的来源,但如果你把它添加到你的global.asax,它就会对问题进行排序.我不知道为什么但是你的标签中的requireSSL = true不足以使其安全.

  protected void Application_EndRequest(Object sender, EventArgs e)
    {
        string authCookie = FormsAuthentication.FormsCookieName;

        foreach (string sCookie in Request.Cookies)
        {
            if (sCookie.Equals(authCookie))
            {
                // Set the cookie to be secure. Browsers will send the cookie
                // only to pages requested with https
                var httpCookie = Response.Cookies[sCookie];
                if (httpCookie != null) httpCookie.Secure = true;
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

  • @AnarchistGreek,对 IBM 的 AppScan 不起作用。它仍然声称 cookie 不安全。 (2认同)

spa*_*cvs 7

您的问题看起来是因为您的表单配置不正确.你有:

<forms ... requireSSL="" ... />
Run Code Online (Sandbox Code Playgroud)

你应该有

<forms ... requireSSL="true" ... />
Run Code Online (Sandbox Code Playgroud)

根据微软requireSSL在属性httpCookies标签被覆盖requireSSL的属性forms标签.您没有设置该值,但您指定它可能导致IIS使用默认值false.你应该把它设置为true.