Spring CSRF-токен не работает, когда отправляемый запрос является составным запросом
Я использую,
Spring Framework 4.0.0 RELEASE (GA)Spring Security 3.2.0 RELEASE (GA)Struts 2.3.16В котором я использую встроенный токен безопасности для защиты от CSRF-атак.
Форма Struts выглядит следующим образом.
Сгенерированный HTML-код выглядит следующим образом.
Это прекрасно работает, если запрос не является составным в этом случае запрос заканчивается кодом состояния 403.
HTTP-статус 403 - Неверный токен CSRFноль' был найден в параметре запроса '_csrf» или заголовокX-CSRF-ЗНАК».
тип Отчет
сообщение Неверный токен CSRFноль' был найден в параметре запроса '_csrf» или заголовокX-CSRF-ЗНАК».
описание Доступ к указанному ресурсу был запрещен.
spring-security.xml
Файл выглядит следующим образом.
Итак, где искать этот токен, когда запрос состоит из нескольких частей? (Это не должно быть связано со Struts вообще.)
РеализацияUserDetailsService
можно найти вэтот мой предыдущий вопрос, если нужно.
размещениеMultipartFilter
до весны безопасности тоже не помогло.
web.xml
Файл выглядит следующим образом.
contextConfigLocation
/WEB-INF/applicationContext.xml
/WEB-INF/spring-security.xml
MultipartFilter
org.springframework.web.multipart.support.MultipartFilter
springSecurityFilterChain
org.springframework.web.filter.DelegatingFilterProxy
MultipartFilter
/*
springSecurityFilterChain
/*
AdminLoginNocacheFilter
filter.AdminLoginNocacheFilter
AdminLoginNocacheFilter
/admin_login/*
NoCacheFilter
filter.NoCacheFilter
NoCacheFilter
/admin_side/*
org.springframework.web.context.ContextLoaderListener
Description
org.springframework.web.context.request.RequestContextListener
org.springframework.security.web.session.HttpSessionEventPublisher
struts2
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
struts.devMode
true
struts2
/*
30
index.jsp
Это работает только тогда, когда токен добавляется в качестве параметра строки запроса, как указано ниже, однако это не рекомендуется.
...