2016-12-02 65 views
0

儘管在web.config中有以下設置,但我們進行了安全審查,發現我們的ASP.NET MVC應用程序中的Cookie未設置爲安全:未在AWS ASP.NET MVC網站上設置安全cookie

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

該網站未使用表單身份驗證,因此無需<forms requireSSL="true">設置。

該網站託管在AWS應用服務器上,並通過ELB訪問。在應用程序服務器上的內部網站是HTTP,但外部是HTTPS。

我試圖實現一個解決方案在這裏找到:

http://www.jamescrowley.co.uk/2014/03/07/ssl-termination-and-secure-cookiesrequiressl-with-asp-net-forms-authentication/

添加以下重寫規則,這web.config中:

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

U不幸的是這會導致ELB失敗。當與我們的內部AWS支持團隊交談時,他們說這是因爲ELB健康檢查失敗。在網站的根目錄中有一個health.html頁面。有沒有一種方法可以將上述條件應用於ELB使用的health.html頁面,從而忽略此條件?我不熟悉重寫規則,因此不完全熟悉語法和工作方式。

回答

1

我還不能對此進行測試,但在理論上,我認爲你只需要改變你的條件:

 <conditions logicalGrouping="MatchAll" > 
      <add input="{HTTP_X_FORWARDED_PROTO}" pattern="https" /> 
      <add input="{REQUEST_URI}" negate="true" pattern="^/health.html$" ignoreCase="true" /> 
     </conditions>