Поддержка Spring Security 3.2 CSRF для составных запросов
Мы используем Spring Security с нашим приложением в течение нескольких лет. На прошлой неделе мы обновили Spring Security с версии 3.1.4 до 3.2.0. Обновление прошло успешно, и мы не нашли никаких ошибок после обновления.
Просматривая документацию по Spring Security 3.2.0, мы обнаружили новые функции, связанные с защитой CSRF и заголовками безопасности. Мы следовали инструкциям в документации по Spring Security 3.2.0, чтобы включить защиту CSRF для наших защищенных ресурсов. Он отлично работает для обычных форм, но не работает для многочастных форм в нашем приложении. При отправке формы,CsrfFilter
выдает ошибку «Отказано в доступе», ссылаясь на отсутствие токена CSRF в запросе (определяется по журналам DEBUG). Мы попытались использовать первый вариант, предложенный вSpring Security документация для того, чтобы защита CSRF работала с многочастными формами. Мы не хотим использовать второй предложенный вариант, поскольку он пропускает токены CSRF через URL-адреса и создает угрозу безопасности.
Соответствующая часть нашей конфигурации, основанная на документации, доступна в видеСуть на Github. Мы используем Spring версии 4.0.0.
Обратите внимание, что мы уже попробовали следующие варианты без успеха:
Не объявляяMultipartFilter
вweb.xml
.Не задано имя компонента-преобразователя дляMultipartFilter
вweb.xml
.Использование имени компонента распознавателя по умолчаниюfilterMultipartResolver
вwebContext.xml
.ОБНОВИТЬ: Я подтвердил, что задокументированное поведение не работает даже с примером приложения на одной странице. Может ли кто-нибудь подтвердить, что задокументированное поведение работает так, как ожидалось? Есть ли пример рабочего приложения, которое можно использовать?