2016-12-02 4 views
0

web.config에서 다음 설정을 지정 했음에도 불구하고 ASP.NET MVC 애플리케이션의 쿠키가 안전하지 않은 것으로 밝혀진 보안 검토가있었습니다.안전한 쿠키가 AWS ASP.NET MVC 웹 사이트에 설정되지 않음

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

웹 사이트에서 양식 인증을 사용하지 않으므로 <forms requireSSL="true"> 설정이 필요하지 않습니다.

웹 사이트는 AWS 앱 서버에서 호스팅되며 ELB를 통해 액세스 할 수 있습니다. 내부적으로 앱 서버에서 웹 사이트는 HTTP이지만 외부 적으로는 HTTPS입니다. Web.config의이에

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

추가 된 다음 다시 쓰기 규칙을 :

내가 솔루션을 구현하기 위해 노력했습니다 여기

<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 변수를 추가 .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>