2016-12-02 12 views
0

セキュリティレビューでは、ASP.NET MVCアプリケーションのCookieがweb.configに次のような設定をしていても安全ではないことが判明しました:AWSに安全なクッキーが設定されていないASP.NET MVC Webサイト

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

ウェブサイトはフォーム認証を使用していないため、<forms requireSSL="true">の設定は必要ありません。

ウェブサイトはAWSアプリケーションサーバー上でホストされ、ELBを介してアクセスされます。内部的にはアプリケーションサーバー上のWebサイトはHTTPですが、外部的にはHTTPSです。

私はここで見つけるソリューションを実装しようとしました:

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

をそしてapplicationHostにHTTPS変数を追加しました:

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

は、web.configファイルにこれに以下の書き換えルールを追加しました.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> 
関連する問題