powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Странное поведение обработчика CSRF токена.
7 сообщений из 7, страница 1 из 1
Странное поведение обработчика CSRF токена.
    #39761515
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Столкнулся с непонятным поведением обработчика токена безопасности CSRF.
А именно - если я добавляю на форму (method=POST)

Код: html
1.
<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" />


То при сабмите выдается ошибка
HTTP Status 403 – ForbiddenInvalid CSRF Token 'null' was found on the request parameter '_csrf' or header 'X-CSRF-TOKEN'.
Но если добавляю его в GET-параметр вызова,
Код: html
1.
<form action="/photo/upload?${_csrf.parameterName}=${_csrf.token}" method="POST" enctype="multipart/form-data">


то все работает нормально!

Контроллер обычный
Код: java
1.
2.
3.
4.
5.
    @RequestMapping(value = "/photo/upload", method = RequestMethod.POST)
    public ModelAndView photo(@RequestParam("file") MultipartFile file,
    HttpServletRequest request) throws FileNotFoundException, IOException, SQLException {
...
}



Оно конечно можно и так оставить, но хотелось бы ясности в данном вопросе.
...
Рейтинг: 0 / 0
Странное поведение обработчика CSRF токена.
    #39761516
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Java Spring 4.0.1 + JDK1.8 + Tomcat 8.0.27
...
Рейтинг: 0 / 0
Странное поведение обработчика CSRF токена.
    #39761520
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты всерьёз спрашиваешь "почему выдаётся ошибка отсутствия параметра в запросе, когда я не добавляю параметр в запрос" или просто не в курсе чем отличается GET от POST?
...
Рейтинг: 0 / 0
Странное поведение обработчика CSRF токена.
    #39761524
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovТы всерьёз спрашиваешь "почему выдаётся ошибка отсутствия параметра в запросе, когда я не добавляю параметр в запрос

Вы утверждаете, что так нельзя задавать параметр?
Код: html
1.
2.
3.
4.
5.
6.
<form action="/photo/upload" method="POST" enctype="multipart/form-data">
   ...

   <input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" />
   ...
</form>
...
Рейтинг: 0 / 0
Странное поведение обработчика CSRF токена.
    #39761546
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL2008, https://docs.spring.io/spring-security/site/docs/4.0.x/reference/html/csrf.html

автор16.5.4 Multipart (file upload)
There are two options to using CSRF protection with multipart/form-data. Each option has its tradeoffs.

Placing MultipartFilter before Spring Security
Include CSRF token in action
[Note]
Before you integrate Spring Security’s CSRF protection with multipart file upload, ensure that you can upload without the CSRF protection first. More information about using multipart forms with Spring can be found within the 17.10 Spring’s multipart (file upload) support section of the Spring reference and the MultipartFilter javadoc.
...
Рейтинг: 0 / 0
Странное поведение обработчика CSRF токена.
    #39761560
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovТы всерьёз спрашиваешь "почему выдаётся ошибка отсутствия параметра в запросе, когда я не добавляю параметр в запрос" или просто не в курсе чем отличается GET от POST?

а Дмитрий всерьез говорит,что реквест атрибут и реквест параметр надо отличать друг от друга. В случае мультипарт сообщения - в какую-часть мультипарта вы хотите засунуть токен? А именно это вы и делаете, когда объявляете токен в поле формы.
...
Рейтинг: 0 / 0
Странное поведение обработчика CSRF токена.
    #39761567
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОзверинDimitry SibiryakovТы всерьёз спрашиваешь "почему выдаётся ошибка отсутствия параметра в запросе, когда я не добавляю параметр в запрос" или просто не в курсе чем отличается GET от POST?

а Дмитрий всерьез говорит,что реквест атрибут и реквест параметр надо отличать друг от друга. В случае мультипарт сообщения - в какую-часть мультипарта вы хотите засунуть токен? А именно это вы и делаете, когда объявляете токен в поле формы.
Вы правы! В других случаях (не мультипарт) все работает нормально.
Спасибо за разъяснения!
А то всю голову сломал.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Странное поведение обработчика CSRF токена.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]