MVC Html.AntiForgeryToken() 防止CSRF攻击

本文详细介绍了MVC中的AntiForgeryToken如何防止跨站请求伪造(CSRF)攻击。通过在View中使用@Html.AntiForgeryToken()生成隐藏字段,并在Controller的Action上添加[ValidateAntiForgeryToken]特性,确保请求的cookie与页面隐藏字段值匹配,从而避免攻击。文中通过实例展示了CSRF攻击的原理和防止方法,强调了在进行数据操作时防止CSRF攻击的重要性。
摘要由CSDN通过智能技术生成

MVC中的Html.AntiForgeryToken()是用来防止跨站请求伪造(CSRF:Cross-site request forgery)攻击的一个措施,它跟XSS(XSS又叫CSS:Cross-Site-Script),攻击不同,XSS一般是利用站内信任的用户在网站内插入恶意的脚本代码进行攻击,而CSRF则是伪造成受信任用户对网站进行攻击

解决方法:

View视图页面用@Html.AntiForgeryToken()生成一个隐藏的窗体字段(防伪标记),在提交窗体时将验证此字段
Controller控制器用[ValidateAntiForgeryToken]该特性用于检测服务器请求是否已被篡改

 

举个简单例子,譬如整个系统的公告在网站首页显示,而这个公告是从后台提交的,我用最简单的写法:

网站后台(Home/Index页面)设置首页公告内容,提交到HomeController的Text Action

 

@using (Html.BeginForm("Text","Home",FormMethod.Post))
{
    @:网站公告:<input type="text" name="Notice" id="Notice" />
    <input type="submit" value="Submit" />
}


HomeController的Text Action

[HttpPost]
 public ActionResult Text()
 {
     ViewBag.Notice = Request.Form["Notice"].ToString();
     return View();
 }


填写完公告,提交,显示

此时提供给了跨站攻击的漏洞,CSRF一般依赖几个条件

(1)攻击者了解受害者所在的站点

 

(2)攻击者的目标站点具有持久化授权cookie或者受害者具有当前会话cookie

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tiz198183

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值