Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 37886|Resposta: 4

[ASP.NET] MVC ajax com AntiForgeryToken para prevenir ataques CSRF

[Copiar link]
Publicado em 02/11/2017 10:06:29 | | | |
É frequentemente visto que os dados do post ajax para o servidor no projeto não são marcados com tags anti-falsificação, causando ataques CSRF, e é muito fácil adicionar marcas anti-falsificação ao Asp.net MVC adicionando Html.AntiForgeryToken() ao formulário.
Html.AntiForgeryToken() gera um par de strings criptografadas que são armazenadas em cookies e entradas. Também trazemos AntiForgeryToken no post do ajax
Html.AntiForgeryToken() no MVC é uma medida para prevenir ataques de falsificação de requisição entre sites (CSRF: Cross-site request forgery), que é diferente do XSS (XSS também é conhecido como CSS: Cross-Site-Script); o XSS geralmente utiliza usuários confiáveis no site para inserir código de script malicioso na rede para atacar. Já o CSRF é um usuário pseudo-confiável atacando um site.
Primeiro, vamos analisar o código da seguinte forma:

Ao rodar, o código html gerado fica assim:



Vamos clicar no botão de teste para solicitar um teste e ver se ele possui cookies anti-falsificação, como mostrado na figura abaixo:



O código no controlador é o seguinte:

Precisamos adicionar o recurso ValidateAntiForgeryToken a cada controlador; se o usuário não trouxer o AntiForgeryToken, podemos retornar um prompt amigável ao usuário, da seguinte forma:







Anterior:asp.net recurso de vinculação mvc BindAttribute
Próximo:Uma das comparações entre CMMI e Agile: a diferença essencial entre os dois
 Senhorio| Publicado em 02/11/2017 11:05:37 |
Para o método acima, você deve personalizar o recurso e não pode usar o recurso padrão ValidateAntiForgeryToken

O recurso padrão é pegar o valor no formulário e depois julgá-lo



Encapsulei um método de post com jQuery com validação anti-falsificação, e o código é o seguinte:



 Senhorio| Publicado em 02/11/2017 11:17:36 |
IsAjaxRequest para determinar se é uma solicitação ajax

Basicamente, o IsAjaxRequest() determina se há um campo X-Requested-With no cabeçalho e se ele é um XMLHttpRequest

Olhar a documentação é inútil, depende do código-fonte.
 Senhorio| Publicado em 20/02/2021 19:22:26 |
ASP.NET Ataque CSRF Encapsulamento de requerimento Ajax
https://www.itsvse.com/thread-8077-1-1.html
Publicado em 09/12/2021 18:37:56 |
testtesttesttesttesttest
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com