Índice
Existe um tipo de ataque a que estamos sujeitos e que muitas vezes esquecemos, este é o Cross Site Request Forgery ou CSRF, isso é responsável por enganar nosso aplicativo para que receba dados que não vêm do domínio onde está hospedado.Este tipo de ataque é bastante prejudicial, pois faz com que um usuário enganado use sua autenticação para inserir dados em nosso banco de dados, imagine que com um ataque deste tipo um usuário administrativo ou talvez notícias falsas consiga entrar em nossa seção de notícias .
Como explicamos, este ataque engana nosso aplicativo para receber dados que não vêm dele, para isso aproveita a maneira como os protocolos funcionam como HTTP e seus diferentes métodos, portanto, um invasor pode crie um formulário e aponte para o nosso controlador.
Para ilustrar esse ataque, vamos examinar o seguinte controlador que é vulnerável a esse tipo de ataque:
Aqui podemos ver como obtemos os dados diretamente do nosso formulário e isso não é ruim, o único problema é que não informamos ao nosso aplicativo que ele deve validar sua origem, com isso um invasor pode gerar um script como o seguinte:
PROLONGAR
Aqui fica claro o que acontece, ao carregar esta página, o formulário que aponta para um registro específico no banco de dados é enviado, este formulário aponta para um controlador válido, então se um usuário autenticado for direcionado para esta página estaremos provavelmente em um um pouco de dificuldade.Por mais fatalista que possa ser, este ataque é evitável, para isso só temos que fazer algumas validações que garantam que os dados recebidos provêm da nossa aplicação, para isso podemos utilizar algumas destas técnicas:
Referência de domínioConsiste em verificar de qual domínio vem a solicitação, com isso garantimos que é apenas do domínio onde nossa aplicação está hospedada, o único problema ou desvantagem é que se migrarmos nossa aplicação de domínio poderemos ter que reconstruir a validação no caso não tornamos dinâmico. Também é possível fazer uma referência falsa tirando proveito das vulnerabilidades do aplicativo, como Adobe Flash.
Token geradoCom esta opção o que fazemos é que dentro do nosso formulário um símbolo que é único por usuário, então nossa aplicação ao receber os formulários valida que o token é o mesmo, desta forma permite que os dados sejam aceitos ou não. Esta é a opção mais amplamente utilizada, pois é muito fácil de implementar e tem poucas ou nenhuma desvantagem.
No caso do token gerado ASP.NET MVC contém alguns métodos que podem nos ajudar, o principal deles é @ Html.AntiForgeryToken () que gera a chave secreta pela qual nosso aplicativo pode validar os formulários.
Vemos então que existem mais áreas do que pensamos e que devemos cuidar em nossos aplicativos, portanto, devemos nos informar e estar cientes de como os ataques ocorrem para encontrar maneiras de evitá-los.