본문 바로가기
프로그래밍/네트워크, 보안

Tomcat에 X-Frame-Options 헤더와 X-Content-Type-Options 헤더 적용하기

by pentode 2018. 4. 20.

X-Frame-Options 헤더는 FrameSet이나 iframe 등에 의한 클릭재킹에 대한 보호를 제공하며 2009년에 IE8에서 추가되었고 얼마 후 다른 브라우저들에도 채택되었습니다. 이 헤더의 값은 DENY, SAMEORIGIN, ALLOW-FROM 중에 하나를 가지며 각각 외부 사이트에 대한 프레임 금지, 같은 사이트만 허용, 특정 사이트만 허용의 의미를 가집니다.

 

"X-Content-Type-Options: nosniff" 응답 헤더를 보내면 브라우저는 script 및 style sheet요소의 MIME 형식이 잘못된 경우 응답을 거부합니다. 이는 MIME 형식 혼동을 기반으로 하는 공격을 차단하기 위한 보안 기능입니다. 

 

보통 브라우저는 서버로부터 다운받은 이미지 등의 내용을 분석하여 MIME 타입을 결정합니다. 이작업을 MIME sniffing 이라고 합니다. 이미지 파일등의 내부에 XSS 코드를 넣어 실행을 시킬 수 가 있게 되는 것입니다. "X-Content-Type-Options: nosniff"를 지정하면 서버에서 보내온 헤더의 MIME 정보를 사용하여 처리하고, 스니핑을 하지 않게 됩니다.

 

Tomcat 에서 이러한 헤더를 설정하려면 HttpHeaderSecurityFilter를 사용할 수 있습니다. 이 필터 외에도 OWASP 에서 제공하는 필터를 사용할 수 도 있습니다. 모든 웹 페이지에서 공통으로 인클루드 하는 파일이 있다면 그것을 이용하여 직접 헤더를 설정하는 구분을 넣는 방법도 있겠습니다.

 

이 HttpHeaderSecurityFilter는 Tomcat 7.0.77 부터 사용할 수 있습니다.

 

<filter>

    <filter-name>httpHeaderSecurity</filter-name>

    <filter-class>org.apache.catalina.filters.HttpHeaderSecurityFilter</filter-class>

    <init-param>

        <param-name>antiClickJackingOption</param-name>

        <param-value>SAMEORIGIN</param-value>

    </init-param>

</filter>

 

<filter-mapping>

    <filter-name>httpHeaderSecurity</filter-name>

    <url-pattern>/*</url-pattern>

</filter-mapping>

 

※ 참고

클릭잭킹(ClickJacking) 공격이란 숨겨진 링크를 클릭하게 하여 사용자의 의도와는 다름 행동을 하게 하는 공격입니다. ifame이용하는 방법으로는 투명한 iframe을 사이트 위에 덮어 사이트에 특정 기능을 클릭할때 실제는 투명한 iframe 의 링크가 클릭되도록 유도하는 방법 등입니다.

반응형