Asp.net mvc AWS ASP.NET MVC网站上未设置安全cookie
我们进行了安全审查,发现ASP.NET MVC应用程序中的cookie没有设置为安全的,尽管在web.config中有以下设置:Asp.net mvc AWS ASP.NET MVC网站上未设置安全cookie,asp.net-mvc,url-rewriting,iis-8,amazon-elb,Asp.net Mvc,Url Rewriting,Iis 8,Amazon Elb,我们进行了安全审查,发现ASP.NET MVC应用程序中的cookie没有设置为安全的,尽管在web.config中有以下设置: <httpCookies requireSSL="true" httpOnlyCookies="true" /> <rewrite> <rules> <rule name="HTTPS_AlwaysOn" patternSyntax="Wildcard"> <matc
<httpCookies requireSSL="true" httpOnlyCookies="true" />
<rewrite>
<rules>
<rule name="HTTPS_AlwaysOn" patternSyntax="Wildcard">
<match url="*" />
<serverVariables>
<set name="HTTPS" value="on" />
</serverVariables>
<action type="None" />
<conditions>
<add input="{HTTP_X_FORWARDED_PROTO}" pattern="https" />
</conditions>
</rule>
</rules>
</rewrite>
网站未使用表单身份验证,因此无需设置
该网站托管在AWS应用服务器上,通过ELB访问。在应用服务器内部,该网站是HTTP,但在外部,它是HTTPS
我已尝试实施一个解决方案,可在此处找到:
将以下重写规则添加到此web.config中:
<httpCookies requireSSL="true" httpOnlyCookies="true" />
<rewrite>
<rules>
<rule name="HTTPS_AlwaysOn" patternSyntax="Wildcard">
<match url="*" />
<serverVariables>
<set name="HTTPS" value="on" />
</serverVariables>
<action type="None" />
<conditions>
<add input="{HTTP_X_FORWARDED_PROTO}" pattern="https" />
</conditions>
</rule>
</rules>
</rewrite>
并将HTTPS变量添加到applicationHost.config中,以包含:
<rewrite>
<allowedServerVariables>
<add name="HTTPS" />
</allowedServerVariables>
</rewrite>
不幸的是,这导致ELB失败。当与我们的AWS内部支持团队交谈时,他们说这是因为ELB健康检查失败。网站的根目录中有一个health.html页面。是否有方法将条件应用于上述内容,以便ELB使用的health.html页面忽略该条件?我是一个新来重写规则的人,所以不完全精通语法和它们的工作方式 我还不能测试这一点,但理论上我认为你只需要改变你的条件:
<conditions logicalGrouping="MatchAll" >
<add input="{HTTP_X_FORWARDED_PROTO}" pattern="https" />
<add input="{REQUEST_URI}" negate="true" pattern="^/health.html$" ignoreCase="true" />
</conditions>
如果您曾经修复过此问题,请告诉我,我遇到了完全相同的问题,并且尝试了与您使用的完全相同的修复程序,但失败了。在我的例子中,“http”来自负载平衡器。