Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Requisições com POST não funcionam mais

Após a implementação do SpringSecurity, a chamada de um método utilizando a requisição POST parou de funcionar, apresentando o erro no navegador:

 Invalid CSRF Token 'null' was found on the request parameter '_csrf' or header 'X-CSRF-TOKEN'.

Alguém tem alguma sugestão?

1 resposta
solução!

Fala Alexandre, tudo bem ?

Dê uma olhada nessa task do curso -> https://cursos.alura.com.br/course/springmvc-2-integracao-cache-seguranca-e-templates/task/12249

Nessa tarefa é explicada a ideia dos ataques conhecidos como CSRF (Cross Site Request Forgery). Aqueles ataques onde requisições maliciosas são feitas para nosso servidor enviando nosso id de sessão tentando se passar por um usuário real do sistema. Muito comum de ser feito através de formulários fake adicionados em páginas da nossa aplicação.

O Spring Security quando ativado na nossa aplicação já ativa um recurso padrão que é a proteção contra esses ataques. Essa proteção se baseia em esperar um token csrf válido vindo em cada requisição do tipo post. Ou seja, todo form da nossa app, precisa enviar além dos dados normais, mais esse token, para o spring security validar.

É bem fácil cumprir o que ele nos obriga nas nossas requisições do tipo post e nos mantermos protegidos. Basta adicionar em cada formulário um input adicional que enviará o token: <input type="hidden" name="${_csrf.parameterName }" value="${_csrf.token }" />

Perceba que ambos os valores de name e value já são gerados dinamicamente pelo próprio Spring Security e disponibilizados via expression language.

Com esse token sendo enviado em cada post o problema será resolvido.

Espero ter ajudado. Abraço!