У меня есть следующие реализации фильтра 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?
Это не так, поскольку вы сказали, что ваш сервер принимает запросы от любого источника. Удалите этот фильтр, и только сценарии, поступающие из вашего домена, смогут отправлять запросы на ваш сервер. По умолчанию CORS защищает вас. Добавление этого фильтра удаляет защиту, позволяя скриптам любого происхождения отправлять вам запросы. –
Возможный дубликат [Spring Data Rest and Cors] (http://stackoverflow.com/questions/31724994/spring-data-rest-and-cors) – Andremoniy