У меня есть сильные сомнения в использовании безопасности Spring, в частности, я хочу знать, как защитить функции, подключенные к контроллеру (GET и POST). Позвольте мне объяснить лучше, для защиты я не собираюсь выполнять это действие для авторизованных пользователей с определенными ролями, я намерен защищать это действие даже для авторизованных пользователей. Конкретный пример: пользователь, зная идентификатор объекта, вызывает POST-форму напрямую из url, не переходя ни через какую кнопку/ссылку
Недоумения в весеннем методе безопасности POST и GET
Ответы:
Я верю, что вы спрашиваете:
Как предотвратить POST-запросы из других источников?
А вы утверждаете, что:
Я хочу убедиться, что запрос POST исходит только из моей формы!
Spring Security делает это автоматически для HTML FORM. Мы называем эту функцию
Предотвращение CSRF
- Кросс
- Сайт
- Rзапрос
- Фальсификация
Spring Security делает это автоматически. Любой запрос POST проверяется на наличие токена CSRF. Значение, которое Spring устанавливает, когда браузер загружает форму. Без этого токена Spring Security возвращает ошибку 403 (ссылка)
Например:
http
//application security
.mvcMatcher("/**")
.authorizeRequests()
.anyRequest().hasAnyRole("ADMIN","USER")
.and()
.httpBasic()
.and()
.formLogin()
;
имеет включенную защиту CSRF. Чтобы отключить его, мы добавляем .csrf().disable()
http
//application security
.mvcMatcher("/**")
.authorizeRequests()
.anyRequest().hasAnyRole("ADMIN","USER")
.and()
.httpBasic()
.and()
.formLogin()
.and()
.csrf().disable()
;
Вы можете увидеть, как этот пользователь (ссылка) не смог отправить POST без токена CSRF. Решение этого пользователя состояло в том, чтобы отключить защиту CSRF, потому что она включена по умолчанию.
Ответ на ваш вопрос: Вы ничего не должны делать. Защита от CSRF включена по умолчанию.
это уже сделано по умолчанию. Проблемы решены