[java] Tomcat의 클릭재킹(Clickjacking) 방어 기법
클릭재킹(Clickjacking)은 사용자의 클릭이 의도하지 않은 동작을 수행할 수 있도록 만드는 웹 어플리케이션의 보안 취약점입니다. 이를 방어하기 위해 Tomcat 서버에서 몇 가지 기법을 사용할 수 있습니다.
X-Frame-Options 헤더 설정하기
X-Frame-Options
는 클릭재킹을 방지하기 위해 도입된 보안 헤더입니다. 이 헤더를 사용하면 웹페이지가 다른 사이트에서 넣은 <iframe>
에 로드되는 것을 방지할 수 있습니다.
Tomcat에서는 web.xml
파일에 아래와 같이 X-Frame-Options
헤더를 추가하여 클릭재킹을 방어할 수 있습니다.
<web-app>
<filter>
<filter-name>XFrameOptionsFilter</filter-name>
<filter-class>org.apache.catalina.filters.XFrameOptionsFilter</filter-class>
<init-param>
<param-name>deny</param-name>
<param-value>Deny</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>XFrameOptionsFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
위의 예제에서는 XFrameOptionsFilter
를 등록하고 deny
값을 설정하여 모든 <iframe>
요청을 거부하도록 했습니다.
Content-Security-Policy 헤더 설정하기
Content-Security-Policy
는 브라우저에게 특정한 내용을 로드하도록 허용하는 정책을 지정하는 보안 헤더입니다. 이를 사용하면 클릭재킹을 방어할 수 있습니다.
Tomcat에서는 아래와 같이 web.xml
파일에 Content-Security-Policy
헤더를 추가하여 클릭재킹을 방어할 수 있습니다.
<web-app>
<filter>
<filter-name>ContentSecurityPolicyFilter</filter-name>
<filter-class>org.apache.catalina.filters.ContentSecurityPolicyFilter</filter-class>
<init-param>
<param-name>policy</param-name>
<param-value>frame-ancestors 'none';</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>ContentSecurityPolicyFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
위의 예제에서는 ContentSecurityPolicyFilter
를 등록하고 frame-ancestors
값을 'none'
으로 설정하여 모든 <iframe>
요청을 거부하도록 했습니다.