O que é CSRF?
CSRF (falsificação de requisição entre sites), também conhecido como ataque de um clique/session riding, abreviação chinesa: CSRF/XSRF. CSRF (Cross Site Request Forgery) é um método de ataque de rede que foi listado como um dos 20 maiores riscos de segurança na Internet em 2007. Outros riscos de segurança, como injeção de scripts SQL e ataques a scripts de domínio entre sites, tornaram-se bem conhecidos nos últimos anos, e muitos sites têm se defendido contra eles. No entanto, CSRF ainda é um conceito estranho para a maioria das pessoas. Até o Gmail mais famoso teve uma vulnerabilidade CSRF no final de 2007, que foi hackeada e causou grandes prejuízos para os usuários do Gmail.
O que a CSRF pode fazer?
Você pode entender ataques CSRF assim: um atacante roubou sua identidade e enviou pedidos maliciosos em seu nome. A CSRF pode fazer coisas como enviar e-mails, enviar mensagens, roubar sua conta ou até comprar bens e transferir moeda virtual em seu nome...... Os problemas causados incluem: vazamento de privacidade pessoal e segurança da propriedade.
ASP.NET Marca antifalsificação MVC AntiForgeryToken
No ASP.NET MVC, tokens de formulário e tokens de cookies são gerados automaticamente por padrão sempre que @Html.AntiForgeryToken() é usado na página de visualização. No entanto, se quisermos alcançar a recuperação manual em segundo plano, precisamos usar a classe System.Web.Helpers.AntiForgery, e amigos interessados em visualizar o código-fonte descobrirão que, de fato, o método de chamada interna de @Html.AntiForgeryToken() é o mesmo da classe AntiForgery.
Ele é usado principalmente para obter o formulário correspondente e o token de cookie por meio de dois métodos estáticos: AntiForgery.GetHtml() ou AntiForgery.GetTokens (string oldCookieToken, string out newCookieToken, out string formToken). No entanto, deve-se notar que, uma vez chamado o método GetHtml, o token de cookie correspondente será gerado automaticamente, e então um pedaço de código HTML com o campo oculto do valor do token de formulário será retornado diretamente, e o valor retornado estará neste formulário:
<nome de entrada="__RequestVerificationToken" type="hidden" valor="8_nUk_3z0svQr9qcvRBi9SWMZ2-SYmuy9kRe9OgRobGULkb2Z4JZxRZFhR0ndeoy9hmDLDru7MFk-W4xrnL5z5T6VbkfXK7fyRk-egQBGm41"> O nome do campo oculto geralmente é fixo como "__RequestVerificationToken", e o valor é um token de segurança criptografado. Esse campo oculto geralmente é colocado no formulário a ser enviado, e a submissão final é verificada em relação ao token de cookie.
Se você usar o método GetTokens, pode obter o formulário criptografado e o token de cookie após passar os parâmetros correspondentes, mas aqui você precisa armazenar os valores correspondentes por conta própria.
Em seguida, vamos apresentar o método de atualização manual do AntiForgeryToken, principalmente via AJAX.
Código do Pacote:
Código de teste:
Descobrimos que, ao enviar uma solicitação ajax, __RequestVerificationToken parâmetros são automaticamente incluídos, como mostrado na figura abaixo:
|