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

Vista: 44609|Resposta: 1

[Fonte] As tags anti-falsificação ValidateAntiForgeryToken e AutoValidateAntiforgeryToken são explicadas em detalhes

[Copiar link]
Publicado em 20/02/2021 19:57:29 | | | |
Para prevenir ataques CSRF, asp.net mvc oferece o recurso anti-contrafação ValidateAntiForgeryToken e, na nova versão do framework central asp.net, a Microsoft oferece o recurso AutoValidateAntiforgeryToken, especificamente ValidateAntiForgeryToken e AutoValidateAntiforgeryToken e AutoValidateAntiforgeryToken Qual é a diferença, este artigo vai explicar em detalhes.

MVC ajax com AntiForgeryToken para prevenir ataques CSRF
https://www.itsvse.com/thread-4207-1-1.html

ASP.NET Ataque CSRF Encapsulamento de requerimento Ajax
https://www.itsvse.com/thread-8077-1-1.html
Conceito CSRF

A falsificação de solicitação cruzada CSRF, assim como ataques XSS, é extremamente prejudicial, você pode entender assim: o atacante rouba sua identidade e envia uma solicitação maliciosa em seu nome, que é totalmente legítima para o servidor, mas completa uma ação que o atacante espera, como enviar e-mails e mensagens em seu nome, roubar sua conta, adicionar administradores de sistema ou até mesmo comprar mercadorias, Transferências de moeda virtual, etc. Web A é um site com vulnerabilidade CSRF, Web B é um site malicioso criado por um atacante, e o Usuário C é um usuário legítimo da Web A.


ASP.NET MVC contra ataques da CSRF

Na página de visualização, use @Html.AntiForgeryToken() para adicionar uma tag e, quando o usuário acessar a página, o backend gerará automaticamente um código html oculto com a tag, conforme segue:


<nome de entrada="__RequestVerificationToken" tipo="oculto" value="CfDJ8FBn4LzSYglJpE6Q0fWvZ8WDMTgwK49lDU1XGuP5-5j4JlSCML_IDOO3XDL5EOyI_mS2Ux7lLSfI7ASQnIIxo2ScEJvnABf9v51TUZl_iM2S63zuiPK4lcXRPa_KUUDbK-LS4HD16pJusFRppj-dEGc" />
O controlador em segundo plano precisa ser configurado [ValidateAntiForgeryToken] para evitar a falsificação de envios de formulários.

ValidateAntiForgeryToken e AutoValidateAntiforgeryToken são diferentes

AutoValidateAntiforgeryTokenAuthorizationFilter herda o ValidateAntiforgeryTokenAuthorizationFilter, mas apenas reescreve o método ShouldValidate nele.

Propriedade AutoValidateAntiforgeryToken que causa validação de tokens anti-falsificação para todos os métodos HTTP inseguros.Métodos HTTP diferentes de GET, HEAD, OPTIONS e TRACE requerem um token anti-falsificação。 Isso pode ser aplicado como um filtro global para acionar a validação de token anti-falsificação da aplicação por padrão.

O login do hiperlink está visível.

AutoValidateAntiforgeryTokenAttribute valida a chamada para AutoValidateAntiforgeryTokenAuthorizationFilter, que herda de ValidateAntiforgeryTokenAuthorizationFilter,O método ShouldValidate foi reescrito, retornando true significa que precisa ser validado, e retornando false não será validado, como mostrado na figura abaixo:

Analise o código-fonte:



AutoValidateAntiforgeryTokenAttribute permite que a validação de tokens anti-falsificação seja aplicada globalmente a todos os métodos inseguros, como POST, PUT, PATCH e DELETE. Então você não precisa adicionar a propriedade [ValidateAntiForgeryToken] a toda ação que a exija por isso.

Para usá-lo, adicione o seguinte código ao método de classe Inicialização do seu ConfigureServices:


Se você precisar ignorar a autenticação anti-falsificação, pode adicionar [IgnorarAntifalsificaçãoTokenatribuo à ação.

Às vezes, você pode precisar marcar múltiplas requisições em um controlador, enquanto algumas requisições não precisam ser forjadas, como várias operações baseadas em GET. Existem várias ferramentas que você pode usar para tornar o processo mais conveniente e confortável. A primeira é a propriedade AutoValidateAntiforgeryToken. Ele se comporta como a propriedade ValidateAntiForgeryToken. No entanto, ele automaticamente ignorará as ações chamadas por métodos projetados para recuperação de dados: GET, HEAD, OPTIONS e TRACE. Isso permite adicionar rápida e facilmente métodos anti-falsificação a todos os métodos que podem alterar dados sem afetar a forma como os dados são recuperados.

O código a seguir é um exemplo da propriedade AutoValidateAntiforgeryToken:


Neste exemplo, ambas as operações normais de Índice (GET) funcionarão independentemente da fonte, enquanto tanto a operação de Índice com o método POST quanto a operação RemoveUser como método Delete exigirão que o cliente use um token anti-falsificação.

Personalize as informações relevantes

Muitas pessoas podem se perguntar se o nome do domínio oculto gerado pode ser substituído pelo seu próprio, e se o nome do cookie pode ser alterado para o deles.

A resposta é sim, vamos demonstrar brevemente:

No método ConfigureServices da Startup, adicione o seguinte para modificar o nome padrão de acordo.


Nota: A maior diferença entre asp.net core e asp.net é,O Core suporta a passagem de parâmetros de validação solicitando um cabeçalho, não para formar formulários!

cadeia de const privada AntiforgeryTokenFieldName = "__RequestVerificationToken";
string const privado AntiforgeryTokenHeaderName = "RequestVerificationToken";


Você pode ver o código-fonte:O login do hiperlink está visível.

Código de teste:





Resultado: Tentar acessar o método test1 retorna um erro 400, acessar o método test2 retorna o parâmetro str que passamos, e você pode ver que o recurso AutoValidateAntiforgeryToken não intercepta a solicitação GET.

(Fim)




Anterior:Fiddler substitui links, solicita redirecionamentos de encaminhamento
Próximo:[virar] SQL Server SQL Count
 Senhorio| Publicado em 08/07/2023 22:07:08 |
ASP.NET Solicita o MVC para Validação de Conteúdo Perigoso XSS (ValidateInput)
https://www.itsvse.com/thread-10624-1-1.html
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