Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Funcionamento da defesa contra o CSRF

Não entendi muito bem como funciona a proteção contra ataques CSRF. Se o servidor gera um token que fica gravado no html da página, o que impede um hacker de alterar o html da página e se utilizar do token gerado?

3 respostas

Olá Fernando, tudo bem com você?

A questão é que não se trata de um token único do servidor para toda aplicação, caso fosse dessa maneira realmente não faria sentido :)

Essa abordagem que é chamada de Synchronizer Token Pattern, tem 2 formas de ser feitas:

  • 1 token por sessão do usuário
  • 1 token por requisição do usuário

O padrão da configuração feita é ser 1 por sessão, você pode checar isso visualizando o token gerado, deletando o cookie e logando novamente, e verá que o valor mudou

E com isso temos uma proteção, pois agora quem for executar o csrf precisa ter um token único gerado pelo servidor, ( o que já dificulta muito o ataque), agora vamos supor que de alguma forma ele tenha conseguido o token csrf, apenas deslogando do sistema já conseguimos invalidar e fazer com que esse ataque não ocorra, utilizando o por sessão se torna mais difícil ainda ( dado que o tempo de vida será de minutos), por isso que é dito uma proteção de token sincrono, não há como montar um html com algo fixo para simular um usuário cadastrado dado o servidor espera o token que é algo dinâmico e com tempo de vida bem pequeno, protegendo a aplicação desse tipo de ataque :)

Abraços e Bons Estudos!

solução!

Oi FERNANDO

O que você descreveu pode ser outro tipo de ataque. Mas o CSRF ocorre quando uma requisição HTTP é feita entre sites na tentativa de se passar por um usuário legítimo. Quem se utiliza desse tipo de ataque normalmente foca em fazê-lo esperando que usuário alvo esteja autenticado no site onde a requisição fraudulenta será realizada, a fim de se ter mais privilégios e acessos à operações. E a razão de todo o problema está em como os navegadores lidam com os Cookies.

A proteção classicamente utilizada nos formulários é a de criar um campo oculto com um token único por usuário. Esse token fica salvo na sessão do usuário no servidor e, quando o formulário é postado, o token enviado pelo formulário é comparado com o que se tem na sessão, lá no servidor. Sendo iguais, a requisição é aceita. Caso contrário, é recusada.

O token resolve o CSRF porque o atacante não tem como submeter uma requisição fraudulenta para o site destino com o token correto da sessão do usuário, o CSRF basicamente explora a forma como os Cookies do browse funcionam, mas sim, existem outros tipos de ataques que não necessariamente um token resolveria.

Abraço!

Obrigado pelas respostas!