CSRF在ASP.NET Core中的处理方法详解(3)

$("#btnAjax").on("click", function () { var token = $("input[name='__RequestVerificationToken']").val(); $.ajax({ type: "post", dataType: "html", url: '@Url.Action("AntiAjax", "Home")', data: { message: $('#ajaxMsg').val() }, headers: { "RequestVerificationToken": token }, success: function (result) { alert(result); }, error: function (err, scnd) { alert(err.statusText); } }); });

这样就能处理上面出现的问题了!

使用三:自定义相关信息

可能会有不少人觉得,像那个生成的隐藏域那个name能不能换成自己的,那个cookie的名字能不能换成自己的〜〜

答案是肯定可以的,下面简单示范一下:

在Startup的ConfigureServices方法中,添加下面的内容即可对默认的名称进行相应的修改。

services.AddAntiforgery(option => { option.CookieName = "CUSTOMER-CSRF-COOKIE"; option.FormFieldName = "CustomerFieldName"; option.HeaderName = "CUSTOMER-CSRF-HEADER"; });

相应的,ajax请求也要做修改:

var token = $("input[name='CustomerFieldName']").val();//隐藏域的名称要改 $.ajax({ type: "post", dataType: "html", url: '@Url.Action("AntiAjax", "Home")', data: { message: $('#ajaxMsg').val() }, headers: { "CUSTOMER-CSRF-HEADER": token //注意header要修改 }, success: function (result) { alert(result); }, error: function (err, scnd) { alert(err.statusText); } });

下面是效果:

Form表单:

CSRF在ASP.NET Core中的处理方法详解

Cookie:

CSRF在ASP.NET Core中的处理方法详解

本文涉及到的相关项目:

关于CSRF相关的内容

Preventing Cross-Site Request Forgery (XSRF/CSRF) Attacks in ASP.NET Core

浅谈CSRF攻击方式

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

您可能感兴趣的文章:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wdssfw.html