[asp.net-session] ASP.NET 세션 쿠키에서 보안 플래그를 설정하는 방법

HTTPS를 통해서만 전송되고 일반 HTTP를 통해 전송되지 않도록 ASP.NET 세션 쿠키에서 보안 플래그를 설정하는 방법은 무엇입니까?



답변

이 두 가지, 하나 개 httpCookies에서이 요소를 web.config켜 할 수 requireSSL있는 단지 만도 폼 인증 내부 SSL의 세션을 포함하여 모든 쿠키를 전송할 수는 있지만, httpcookies에 SSL을 켜면 내부의 형태도 구성에 당신은 또한 그것을 설정해야합니다.

명확성을 위해 편집하십시오 :
이것을 넣으십시오.<system.web>

<httpCookies requireSSL="true" />


답변

에서 <system.web>요소, 다음과 같은 요소를 추가 :

<httpCookies requireSSL="true" />

그러나 블록에 <forms>요소가 있으면 system.web\authentication의 설정이 재정의 httpCookies되어 기본값으로 다시 설정됩니다 false.

이 경우 requireSSL="true"양식 요소에도 속성을 추가해야합니다 .

따라서 다음과 같이 끝납니다.

<system.web>
    <authentication mode="Forms">
        <forms requireSSL="true">
            <!-- forms content -->
        </forms>
    </authentication>
</system.web>

이러한 요소에 대한 MSDN 설명서는 여기여기 를 참조 하십시오 .


답변

엔터프라이즈 환경에서 체크인 된 코드에 대해 이야기하면 문제가 빨리 발생합니다. 우리는 가장 좋은 방법은 web.Release.config 에 다음을 포함시키는 것입니다.

<system.web>
  <compilation xdt:Transform="RemoveAttributes(debug)" />
  <authentication>
      <forms xdt:Transform="Replace" timeout="20" requireSSL="true" />
  </authentication>
</system.web>

이렇게하면 개발자는 영향을받지 않으며 (디버그에서 실행) 릴리스 빌드를받는 서버 만 쿠키를 SSL로 요구합니다.


답변

secure-이 속성은 요청이 HTTPS와 같은 보안 채널을 통해 전송되는 경우에만 쿠키를 보내도록 브라우저에 지시합니다. 이는 쿠키가 암호화되지 않은 요청을 통과하지 못하도록 보호합니다. HTTP 및 HTTPS를 통해 애플리케이션에 액세스 할 수있는 경우 쿠키를 일반 텍스트로 보낼 수 있습니다.


답변

@ Mark D의 대답을 바탕으로 web.config 변환을 사용하여 다양한 쿠키를 모두 보안으로 설정합니다. 이 설정을 포함 anonymousIdentification cookieRequireSSL하고를 httpCookies requireSSL.

이를 위해 web.Release.config를 다음과 같이 설정하십시오.

<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <system.web>
    <httpCookies xdt:Transform="SetAttributes(httpOnlyCookies)" httpOnlyCookies="true" />
    <httpCookies xdt:Transform="SetAttributes(requireSSL)" requireSSL="true" />
    <anonymousIdentification xdt:Transform="SetAttributes(cookieRequireSSL)" cookieRequireSSL="true" />
  </system.web>
</configuration>

ASP.NET Membership Provider(내가 알고있는 고대) 역할 및 양식 인증을 사용하는 경우 roleManager cookieRequireSSLforms requireSSL속성도 안전한 것으로 설정하려고합니다 . 그렇다면 web.release.config는 다음과 같습니다 (위에 멤버십 API의 새 태그와 함께 포함됨).

<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <system.web>
    <httpCookies xdt:Transform="SetAttributes(httpOnlyCookies)" httpOnlyCookies="true" />
    <httpCookies xdt:Transform="SetAttributes(requireSSL)" requireSSL="true" />
    <anonymousIdentification xdt:Transform="SetAttributes(cookieRequireSSL)" cookieRequireSSL="true" />
    <roleManager xdt:Transform="SetAttributes(cookieRequireSSL)" cookieRequireSSL="true" />
    <authentication>
        <forms xdt:Transform="SetAttributes(requireSSL)" requireSSL="true" />
    </authentication>
  </system.web>
</configuration>

web.config의 배경이 여기에서 변환됩니다. http://go.microsoft.com/fwlink/?LinkId=125889

분명히 이것은 OP의 원래 질문을 넘어서는 것이지만 모두 보안으로 설정하지 않으면 보안 검색 도구가 표시되고 보고서에 빨간색 플래그가 표시 될 것으로 기대할 수 있습니다. 내가 어떻게 알아? 🙂


답변