2017-02-10 4 views
0

I CORS 필터의 다음과 같은 구현이 :은 어떻게 CORS 필터는 XSS 공격으로부터 나를 보호 않습니다

@Singleton 
@Provider 
public class CORSFilter implements ContainerResponseFilter { 

    @Override 
    public void filter(ContainerRequestContext requestContext,  ContainerResponseContext responseContext) throws IOException { 
     final int ACCESS_CONTROL_MAX_AGE_IN_SECONDS = 12 * 60 * 60; 
     MultivaluedMap<String, Object> headers = responseContext.getHeaders(); 

     headers.add(ACCESS_CONTROL_ALLOW_ORIGIN, "*"); 
     headers.add(ACCESS_CONTROL_ALLOW_HEADERS, "origin, content-type, accept, authorization"); 
     headers.add(ACCESS_CONTROL_ALLOW_CREDENTIALS, "true"); 
     headers.add(ACCESS_CONTROL_ALLOW_METHODS, "GET, POST, PUT, DELETE, OPTIONS, HEAD"); 
     headers.add(ACCESS_CONTROL_MAX_AGE, ACCESS_CONTROL_MAX_AGE_IN_SECONDS); 

    } 
} 

출처 : 그러나

https://gist.github.com/yunspace/36b0546245c5348a34ed

, 난 아직도 이해가 안 돼요을 이렇게하면 XSS와 브라우저가 추가 된 헤더를 처리하는 방식을 방지해야합니다. 이 코드는 어떻게 XSS 공격으로부터 나를 보호합니까?

+1

서버에서 모든 출처의 요청을 수락한다고 말한 이후로는 그렇지 않습니다. 해당 필터를 제거하면 도메인에서 오는 스크립트 만 서버에 요청을 보낼 수 있습니다. CORS는 기본적으로 사용자를 보호합니다. 이 필터를 추가하면 모든 출처의 스크립트가 요청을 보낼 수있게하여 보호 기능을 제거합니다. –

+0

[Spring Data Rest and Cors]의 가능한 복제본 (http://stackoverflow.com/questions/31724994/spring-data-rest-and-cors) – Andremoniy

답변

0

CORS는 XSS로부터 사용자를 보호하지 않습니다.

동일한 원본 정책 (SOP)은 한 도메인이 다른 도메인의 클라이언트 측 데이터를 가져 오지 못하게합니다.

CORS는 클라이언트 측 데이터를 얻을 수 있도록 CORS가 허용하는 다른 도메인을 허용합니다.

XSS는 동일한 공격을합니다.

CORS를 사용하지 않으면 SOP가 기본 "보안"모드이므로 웹 사이트가 더 안전합니다. CORS를 사용하면 SOP 규칙의 보안이 느려집니다.

XSS는 CORS가 활성화되어 있는지 여부에 상관없이 XSS 취약점이있는 경우 올바른 인코딩과 CSP (Content Security Policy)를 구현하여이를 완화해야합니다.