반응형

개인정보나 비밀번호와 같은 중요정보들이 HTTP로 전송될 경우에는 네트워크 상에서 평문으로 전송되기 때문에 보안 상 좋지 않다.

따라서 HTTP로 요청하였을 때에는 보안상 좋은 HTTPS로 통신을 하도록 강제화해주는 것이 좋다.

 

아래는 IIS10 기준으로 web.config에 설정해주는 사항이다.

아래 사항은 URL Rewrite module을 설치 후 web.config 내 inbound rule에 추가하여 수정하면 된다.

<system.webServer>
    <rewrite>
        <rules>
            <rule name="HTTP to HTTPS redirect" stopProcessing="true">
              <match url="(.*)" />
              <conditions>
              <add input="{HTTPS}" pattern="off" ignoreCase="true" />
             </conditions>
             <action type="Redirect" redirectType="Permanent" url="https://{HTTP_HOST}/{R:1}" />
           </rule>  
        </rules>
    </rewrite>
</system.webServer>

 

이제는 각 항목에 대하여 알아보도록 하자.

1. stopProcessing="true"

 - StopProcessing은 기본적으로 꺼져있으므로 켜주어야 한다.

 - 룰의 규칙에 매칭되어 동작을 할 때 이 flag가 켜져있다면 그것은 더 이상 다음의 룰들을 동작시키지 않고 요청을 바로 IIS request 파이프라인으로 전달하는 것을 의미한다.

 

2. ignoreCase="true"

 - condition에 대하여 패턴 매칭을 할 때 이 속성값을 사용하여 대소문자 구분을 할지 안할지 선택한다.

 

3. <action type="Redirect" redirectType="Permanent" url="https://{HTTP_HOST}/{R:1}" />

 - 리다이렉트를 설정해주며 redirectType을 Permanent로 설정함으로써 응답코드가 301로 오게된다.

 - url 값을 통해 리다이렉트되는 url을 설정해주는데 {R:1} 부분은 match url="(.*)"의 첫번째 괄호에 매칭된 문자열로 변환된다.

 

※ 역참조 추가설명 (참고 : https://nicolas.guelpa.me/blog/2015/02/21/rewrite-redirect-iis.html)

위에서 사용된 R:1이라는 것은 역참조이다. 만약 요청된 URL의 부분 혹은 전체를 이용하여 action을 수행하고 싶다면 역참조를 이용할 수 있다.

{R:0}은 입력된 문자열 전체를 의미하고 {R:1}은 첫번째 괄호에 매칭된 문자열을 의미한다.

 

예를 들어 패턴이 (.*)일 때 http://rootable.tistory.com/backReference 라는 URL이 있을 때 다음과 같이 표현된다.

{R:0} = backReference

{R:1} = backReference

 

왜냐하면 첫번째 괄호에 해당하는 패턴이 모든 문자열을 의미하기 때문이다.

 

만약 패턴이 (back)(.*)일 때 http://rootable.tistory.com/backReference 라는 URL이 있을 때 다음과 같이 표현된다.

{R:0} = backReference

{R:1} = back

 

 

참고) https://docs.microsoft.com/en-us/iis/extensions/url-rewrite-module/url-rewrite-module-configuration-reference

반응형
블로그 이미지

rootable

,