Engenharia-de-Software-UFRPE / lanterna-verde

Lanterna verde é um sistema de avaliação do nível de práticas de greenwashing de uma organização ou produto.
2 stars 5 forks source link

Implementar validação CSRF para métodos POST #18

Closed SteffanoP closed 2 years ago

SteffanoP commented 2 years ago

Com as recentes implementações em #9 e também as de #17, foi verificado uma brecha de segurança para ataques do tipo Cross-Site Request Forgery (CSRF), devido à exceção imposta ao método de verificação CSRF em métodos POST.

Dessa forma, devido a esse tipo de bypass os métodos do tipo POST poderão ser explorados por essa brecha de segurança, sendo necessário uma verificação de token CSRF que é armazenado pelo navegador durante a autenticação. Logo, todo método POST deve possuir o token de CSRF e o back-end deve estar preparado para verificar o csrf_token do navegador e permitir a continuidade do método POST no back-end.

SteffanoP commented 2 years ago

Referência: https://www.stackhawk.com/blog/django-csrf-protection-guide/

ronaldo26rodrigues commented 2 years ago

Estive fazendo uns testes e percebi que o csrftoken pode estar associado às credenciais de autenticação do usuário, então a rota de login sempre recebe um token diferente, que não é validado pelo Django (não sei se isso também poderia ser um problema de front :P). Nesse caso a melhor prática seria usar a tag @csrf_exempt na view login?

SteffanoP commented 2 years ago

Estive fazendo uns testes e percebi que o csrftoken pode estar associado às credenciais de autenticação do usuário, então a rota de login sempre recebe um token diferente, que não é validado pelo Django (não sei se isso também poderia ser um problema de front :P). Nesse caso a melhor prática seria usar a tag @csrf_exempt na view login?

@ronaldo26rodrigues eu vou trabalhar nisso com o back-end, te mantenho informado sobre a melhor forma de implementar uma solução para o problema.