mvc当中[ValidateAntiForgeryToken]的作⽤及⽤法
⼀.CSRF是什么?
  CSRF(Cross-site request forgery),中⽂名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF。
⼆.CSRF可以做什么?
  你这可以这么理解CSRF攻击:攻击者盗⽤了你的⾝份,以你的名义发送恶意请求。CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,甚⾄于购买商品,虚拟货币转账......造成的问题包括:个⼈隐私泄露以及财产安全。
三.CSRF漏洞现状
  CSRF这种攻击⽅式在2000年已经被国外的安全⼈员提出,但在国内,直到06年才开始被关注,08年,国内外的多个⼤型社区和交互⽹站分别爆出CSRF漏洞,如:NYTimes(纽约时报)、Metafilter(⼀个⼤型的BLOG⽹站),YouTube和百度HI......⽽现在,互联⽹上的许多站点仍对此毫⽆防备,以⾄于安全业界称CSRF为“沉睡的巨⼈”。
四.CSRF的原理
 从上图可以看出,要完成⼀次CSRF攻击,受害者必须依次完成两个步骤:
  1.登录受信任⽹站A,并在本地⽣成Cookie。
  2.在不登出A的情况下,访问危险⽹站B。
  看到这⾥,你也许会说:“如果我不满⾜以上两个条件中的⼀个,我就不会受到CSRF的攻击”。是的,确实如此,但你不能保证以下情况不会发⽣:
  1.你不能保证你登录了⼀个⽹站后,不再打开⼀个tab页⾯并访问另外的⽹站。
  2.你不能保证你关闭浏览器了后,你本地的Cookie⽴刻过期,你上次的会话已经结束。(事实上,关闭浏览器不能结束⼀个会话,但⼤多数⼈都会错误的认为关闭浏览器就等于退出登录/结束会话了......)
  3.上图中所谓的攻击⽹站,可能是⼀个存在其他漏洞的可信任的经常被⼈访问的⽹站。
具体步骤:
1、在Html表单⾥⾯使⽤了@Html.AntiForgeryToken()就可以阻⽌CSRF攻击。
2、相应的我们要在Controller中也要加⼊[ValidateAntiForgeryToken]过滤特性。该特性表⽰检测服务器请求是否被篡改。注意:该特性只能⽤于post请求,get请求⽆效。
3、⾄于JS,我们的项⽬中引⽤的是<script src="@Url.Content("~/Content/js/jqueryToken-1.4.2.js")" type="text/javascript"></script>
在JS时要使⽤: $.ajaxAntiForgery才⾏,
如:
$.ajaxAntiForgery({
type: "post",
data: { GroupName: $("#GroupName").val(), GroupPhones: $("#GroupPhones").val() },
dataType: "json",
url: "/Event/Mass/AddGroup",
success: function (data) {
if (data) {
alert("添加成功 ");
$.unblockUI();
}
else {
alert("添加失败 ");
}
}
为什么要用ajax})
注:对数据进⾏增删改时要防⽌csrf攻击!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。