2017-02-10 82 views
0

,我有以下实施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允许其他域名列入白名单,以便他们可以获取客户端数据。

XSS是完成相同的攻击。

没有启用CORS,您的网站更安全,因为SOP处于默认“安全”模式。启用CORS将会放宽SOP规则的安全性。

XSS不关心CORS是否启用,如果您有XSS漏洞,您应该通过正确的编码和实施内容安全策略(CSP)来缓解它。

相关问题