aspnet mvc使用@Html.AntiForgeryToken()防止跨站攻击_html/css_WEB-ITnose

php中文网
发布: 2016-06-21 08:52:38
原创
1911人浏览过

asp.net mvc中html.antiforgerytoken()可以防止跨站请求伪造攻击,它跟xss(xss又叫css:cross-site-script),攻击不同,xss一般是利用站内信任的用户在网站内插入恶意的脚本代码进行攻击,而csrf则是伪造成受信任用户对网站进行攻击。

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

网站后台(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

(3)目标站点没有对用户在网站行为的第二授权此时

现在我们来开始模拟跨站请求,假设请求地址是http://localhost:25873/Home/Text,且也满足2,3的情况。

于是我新建一个AntiForgeryText.html文件,内容如下

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  <html xmlns="http://www.w3.org/1999/xhtml" >  <head>      <title></title>  </head>  <body>      <form name="badform" method="post" action="http://localhost:6060/Home/Text">          <input type="hidden" name="Notice" id="Notice" value="你的网站被我黑了。。" />          <input type="submit" value="黑掉这个网站" />      </form>  </body>  </html>
登录后复制


在这个html中加了一个隐藏的字段,Name和Id和网站要接收的参数名一样。

我点击了“黑掉这个网站”,呈现如下
 

这个就是利用了漏洞把首页的公告给改了,这就是一个简单的跨站攻击的例子。



MVC中通过在页面上使用 Html.AntiForgeryToken()配合在对应的Action上增加[ValidateAntiForgeryToken]特性来防止跨站攻击。

把上面的代码改成

@using  (Html.BeginForm("Text","Home",FormMethod.Post))  {      @Html.AntiForgeryToken()      @:网站公告:<input type="text" name="Notice" id="Notice" />  <input type="submit" value="Submit" />  }  [HttpPost]  [ValidateAntiForgeryToken]  public ActionResult Text()  {      ViewBag.Notice = Request.Form["Notice"].ToString();      return View();  }
登录后复制


这样子我在AntiForgeryText.html中点"黑掉这个网站",再次发出请求
 

这就成功的防止了跨站攻击

OmniAudio
OmniAudio

OmniAudio 是一款通过 AI 支持将网页、Word 文档、Gmail 内容、文本片段、视频音频文件都转换为音频播客,并生成可在常见 Podcast ap

OmniAudio 111
查看详情 OmniAudio

参考资料:asp.net mvc中的@Html.AntiForgeryToken()防止跨站攻击http://www.ourcodelife.com/thread-49179-1-1.html

立即学习前端免费学习笔记(深入)”;

HTML速学教程(入门课程)
HTML速学教程(入门课程)

HTML怎么学习?HTML怎么入门?HTML在哪学?HTML怎么学才快?不用担心,这里为大家提供了HTML速学教程(入门课程),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号