2017-12-08 1 views
0

현재 저는 프로젝트의 클릭 재킹 공격을 방지하기 위해 노력하고있는 vaadin 프로젝트에 참여하고 있습니다. 솔루션 검색 후 나는 web.xml에 추가하는 다음 코드가 작동 할 것으로 나타났습니다 :클릭 재킹 공격을 막기 위해

<dependency> 
    <groupId>org.apache.tomcat</groupId> 
    <artifactId>tomcat-catalina</artifactId> 
    <version>9.0.2</version> 
</dependency> 

나는를 실행 해요을 :

<filter> 
    <filter-name>httpHeaderSecurity</filter-name> 
    <filter-class>org.apache.catalina.filters.HttpHeaderSecurityFilter</filter-class> 
    <async-supported>true</async-supported> 
    <init-param> 
     <param-name>antiClickJackingEnabled</param-name> 
     <param-value>true</param-value> 
    </init-param> 
    <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> 

내가 pom.xml 파일에 다음과 같은 의존성을 추가했습니다 프로젝트 payara 서버에.

이 프로젝트는하지만, 다음과 같은 오류 던져 실행합니다

Caused by: java.lang.ClassNotFoundException: org.apache.catalina.filters.HttpHeaderSecurityFilter not found by org.glassfish.main.web.core [69] at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1532) at org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:75) at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1955) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at org.apache.catalina.core.ApplicationFilterConfig.loadFilterClass(ApplicationFilterConfig.java:283) at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:253) at org.apache.catalina.core.ApplicationFilterConfig.(ApplicationFilterConfig.java:123) ... 50 more

작동하지 않습니다 클릭 재킹 공격을 방지하기위한 내 솔루션을 의미한다 :

어떤 도움을 이해할 수있을 것이다 :).

먼저 다음의 필터 생성 :

+0

나를 위해 Tomcat과 Glassfish를 섞어서 사용하는 것 같습니다. 아마도 이것도 함께 작동하지 않을 것입니다. –

+0

vaadin을 사용하여 최소한 두 가지 방법이 있습니다. 우리는 둘 다 테스트했으며 현재 아파치 설정을 사용합니다. https://stackoverflow.com/questions/45321503/preventing-clickjacking-attack-by-vaadin –

+0

Yeap 이전에 발견했지만 web.xml의 일부 구성에서 가능한지 생각해보십시오. :) Btw 아파치 설정을 사용하는 솔루션은 무엇입니까? –

답변

0

난 web.xml 파일을 사용하여 다음 방식으로이를 해결 한 구성이어서

public class ClickjackingPreventionFilter implements Filter 
{ 
    private String mode = "DENY"; 

// Add X-FRAME-OPTIONS response header to tell any other browsers who not to display this //content in a frame. 
    @Override 
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { 
     HttpServletResponse res = (HttpServletResponse)response; 
     res.addHeader("X-FRAME-OPTIONS", mode); 
     chain.doFilter(request, response); 
    } 
    @Override 
    public void destroy() { 
    } 

    @Override 
    public void init(FilterConfig filterConfig) { 
     String configMode = filterConfig.getInitParameter("mode"); 
     if (configMode != null) { 
      mode = configMode; 
     } 
    } 
} 

그런 다음 추천 web.xml에으로 :

<filter> 
    <filter-name>ClickjackPreventionFilterDeny</filter-name> 
    <filter-class>com.groupbuilder.preventclickjacking.ClickjackingPreventionFilter</filter-class> 
    <init-param> 
     <param-name>mode</param-name><param-value>DENY</param-value></init-param> 
</filter> 
<filter-mapping> 
     <filter-name>ClickjackPreventionFilterDeny</filter-name> 
     <url-pattern>/*</url-pattern> 
    </filter-mapping> 
관련 문제