我有以下CORS过滤器的实现:
@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攻击?
答案 0 :(得分:0)
CORS不保护您免受XSS攻击。
同源策略(SOP)阻止一个域从另一个域获取客户端数据。
CORS允许将其他域列入白名单,以便获取客户端数据。
XSS是一种完成同样的攻击。</ p>
如果没有启用CORS,您的网站会更安全,因为SOP是默认的&#34;安全&#34;模式。启用CORS会降低SOP规则的安全性。
如果您启用了CORS,XSS并不关心,如果您有XSS漏洞,则应通过正确的编码和实施内容安全策略(CSP)来缓解此漏洞。