Segurança do Web UI Framework - Falsificação de Solicitação entre Sites
O Web UI Framework fornece proteção para o aplicativo contra falsificação de solicitação entre sites (CSRF), que explora maliciosamente um website em que comandos não autorizados são transmitidos de um usuário que o website confia. O CSRF (também chamado XSRF) é diferente do cross-site scripting (CSS ou XSS), que explora a confiança que um usuário possui em um determinado site. O CSRF também é conhecido como um ataque de um só clique, sidejacking ou riding de sessão.
O CSRF funciona incluindo um link ou script em uma página que acessa um site em que o usuário é conhecido ou (supostamente) foi autenticado. Por exemplo, o Usuário A pode estar navegando em um fórum em que o Usuário B postou uma mensagem. Com o CSRF, o Usuário B pode criar o elemento de imagem HTML a seguir que, ao invés de ser um arquivo de imagem, referencia um script no website do banco do Usuário A e solicita um saque de $1 milhão:
<img src="http://bank.example/withdraw?amount=1000000&for=USER-B">
Se o banco do Usuário A mantiver suas informações de autenticação em um cookie, e se o cookie não expirar, quando o navegador do Usuário A tentar carregar a imagem, será enviado um formulário de saque com o cookie de autenticação autorizando a transação sem a aprovação do Usuário A.
- Devido à política do navegador, os cookies de autenticação são enviados para o servidor do banco mesmo que a solicitação tenha se originado a partir de um website diferente.
- O banco do Usuário A armazena informações de autenticação em um cookie e depende completamente do cookies para fins de autenticação.
- O banco do Usuário A não diferencia entre solicitações GET e POST.
- Quando o login é concluído, um token recém-criado é configurado para a sessão (para finalidades de validação). Este token está disponível no lado cliente do aplicativo.
- O token é usado nas seguintes formas:
- Este token é usado para todas as solicitações AJAX e nos utilitários do Web UI Framework.
- Quando uma solicitação POST ou GET é feita para o servidor, o aplicativo valida automaticamente que o token CSRF está disponível na solicitação.