HTTPS 웹메일 사이트 보안 강화 설정

웹메일(WebAccess/WebMobile) 사이트에 SSL 인증서가 적용되어 HTTPS로 접속 가능하면 아래 설정을 참조해 보안을 강화할 것을 권장합니다.

아래 설정이 올바르게 동작하기 위해서는 .NET Framework 4.8이 필요합니다. .NET Framework 버전이 4.8 이하인 경우 아래 사이트를 방문해 .NET Framework 4.8 런타임을 다운로드해서 설치합니다.

https://dotnet.microsoft.com/ko-kr/download/dotnet-framework/net48

HTTPS만 사용하도록 설정

http://host/Logon.aspx로 전송되는 요청을 https://host/Logon.aspx로 강제 리디렉션시켜 https로 진행되도록 설정합니다.

Web.config
<appSettings>
  <add key="RedirectHttps" value="true" />
</appSettings>

Strict-Transport-Security 헤더는 웹 브라우저로 하여금 웹메일 사이트 접속을 항상 HTTPS로만 진행되도록 강제합니다. 웹메일 사이트가 HTTPS로 올바르게 구성되면 아래 헤더를 추가해 비보안 접속을 원천적으로 차단할 수 있습니다.

Web.config
<system.webServer>
  <httpProtocol>
    <customHeaders>
      <add name="Strict-Transport-Security" value="max-age=31536000" />
    </customHeaders>
  </httpProtocol>
</system.webServer>

max-age=31536000 값(초)에 따라 웹브라우저는 이 설정을 1년간 유지합니다.

쿠키 보안 강화

웹메일 사이트가 HTTPS로 올바르게 구성되면 secure 쿠키를 사용하도록 설정합니다. httpCookies 항목의 requireSSL 값을 true로 지정합니다.

Web.config
<system.web>
  <!-- https가 설정되면 requireSSL="true" 로 변경 -->
  <httpCookies httpOnlyCookies="true" requireSSL="true" sameSite="Lax" />
</system.web>

세션/인증과 관련된 주요 쿠키에 대해 HttpOnly/Secure 설정을 해서 보호합니다. HttpOnly 설정은 쿠키를 자바스크립트에서 참조할 수 없게 만들고 Secure 쿠키는 HTTPS에서만 전송되게 제한합니다.

Content-Security-Policy(CSP) 헤더 설정

Content-Security-Policy(CSP) 헤더는 브라우저가 어떤 리소스를 로드하고 실행할 수 있는지 제어하는 강력한 보안 헤더로, XSS/데이터 주입 공격을 효과적으로 차단합니다. 최신 브라우저는 CSP를 지원하므로 설정할 것을 권장합니다.

Web.config
<system.webServer>
  <httpProtocol>
    <customHeaders>
      <add name="Content-Security-Policy" value="
            default-src 'self';
            script-src 'self' 'unsafe-inline' 'unsafe-eval'; 
            style-src 'self' 'unsafe-inline'; 
            connect-src 'self'; 
            object-src 'none'; 
            frame-src 'self' https:;
            frame-ancestors 'self';
            font-src 'self' https://fonts.gstatic.com; 
            img-src 'self' http: https: data: blob:;" />
    </customHeaders>
  </httpProtocol>
</system.webServer>

기본적으로 웹메일 실행 시 웹메일 사이트 내에 있는 리소스만 로딩해서 사용하도록 제한합니다.

웹메일 사이트는 타 사이트의 iframe에 로딩될 수 없도록 차된되어 있습니다. 타 사이트의 iframe에 로딩해야 한다면 frame-ancestors 'self' https://trusted-site.com; 와 같이 수정합니다.

기타

아래 헤더를 추가해 웹메일 사이트의 보안을 향상시킬 수 있습니다.

Web.config
<system.webServer>
  <httpProtocol>
    <customHeaders>
      <add name="X-Frame-Options" value="SAMEORIGIN" />
      <add name="X-Content-Type-Options" value="nosniff" />
      <add name="Referrer-Policy" value="strict-origin-when-cross-origin" />
      <add name="Permissions-Policy" value="geolocation=(), camera=(), microphone=()" />
    </customHeaders>
  </httpProtocol>
</system.webServer>

X-Frame-Options 헤더는 iframe에 웹메일 사이트가 로딩될 수 있는지 여부를 설정합니다. SAMEORIGIN은 동일 출처(호스트 명 동일)에서만 iframe 로딩이 가능하도록 제한합니다. X-Frame-Options 헤더는 Content-Security-Policy(CSP) 헤더에 의해 대체되었지만 CSP 헤더를 지원하지 못하는 오래된 브라우저 호환성을 위해 사용됩니다.

X-Content-Type-Options는 브라우저가 MIME 타입 스니핑(MIME type sniffing)을 하지 못하도록 막는 보안 헤더입니다.

Referrer-Policy 헤더는 웹메일 사이트에서 링크를 클릭해 이동 시 제공되는 Referrer 정보를 제한합니다. strict-origin-when-cross-origin 값은 같은 도메인 이동 시 전체 URL, 다른 도메인 이동 시 origin만 전달, HTTPS에서 HTTP 이동 시 전달하지 않는 방식으로 동작합니다. URL에는 민감한 정보가 포함될 수 있으므로 동일 도메인이 아닌 경우는 정보를 제한해 보안성을 높이게 됩니다.

Permissions-Policy는 브라우저가 제공하는 특정 기능(API, 권한 등)을 어떤 출처(origin)에서 사용할 수 있는지 제어하는 보안 헤더입니다. 위치, 카메라, 마이크 사용 API를 차단합니다.