用途:防止CSRF(跨网站请求伪造)。

用法:在View->Form表单中:<%:Html.AntiForgeryToken()%>

在Controller->Action动作上:[ValidateAntiForgeryToken]

原理:

1、<%:Html.AntiForgeryToken()%>这个方法会生成一个隐藏域:<input name="__RequestVerificationToken" type="hidden" value="7FTM...sdLr1" />并且会将一个以"__RequestVerificationToken“为KEY的COOKIE给控制层。

2、[ValidateAntiForgeryToken],根据传过来的令牌进行对比,如果相同,则允许访问,如果不同则拒绝访问。

关键:ValidateAntiForgeryToken只针对POST请求。

换句话说,[ValidateAntiForgeryToken]必须和[HttpPost]同时加在一个ACTION上才可以正常使用。

这其中的原理我也没想明白,等下次好好把MVC的源代码看看。

不过我这么说是有根据的,我写了一些案例做了测试。

案例:

1、在一个ACTION的GET和POST方式分别加了[ValidateAntiForgeryToken]特性

Action:

2、用一个测试页面以POST方式去请求ACTION,结果是成功的。并且,隐藏域的值和COOKIE都是可以拿到的。

测试Post的页面:

3、用一个测试页面以GET方式去请求ACTION,报错。

测试Get的页面:

推荐使用方式:

1、Post-Only:大概思想是,拒绝所有的GET,只允许自己的POST。(安全,但不灵活)

2、GET只做显示,对所有的GET开放;POST做修改,对外界关闭,对自己开放。(灵活,但不够安全)

国外有个人说,其实这个过滤器本身就不安全,他如是说,所有的REQUEST都是可以伪造的。

转载于:https://www.cnblogs.com/ZaraNet/p/9541237.html

说一说MVC的CSRF(三)相关推荐

  1. ASP.NET MVC 控制器激活(三)

    ASP.NET MVC 控制器激活(三) 前言 在上个篇幅中说到从控制器工厂的GetControllerInstance()方法来执行控制器的注入,本篇要讲是在GetControllerInstanc ...

  2. Spring MVC防御CSRF、XSS和SQL注入攻击

    本文说一下SpringMVC如何防御CSRF(Cross-site request forgery跨站请求伪造)和XSS(Cross site script跨站脚本攻击). 说说CSRF 对CSRF来 ...

  3. ASP.NET MVC 防止 CSRF 的方法

    MVC中的Html.AntiForgeryToken()是用来防止跨站请求伪造(CSRF:Cross-site request forgery)攻击的一个措施,它跟XSS(XSS又叫CSS:Cross ...

  4. 从零开始学习 ASP.NET MVC 1.0 (三) Controller/Action 深入解析与应用实例 【转】

    一.摘要 一个Url请求经过了Routing处理后会调用Controller的Action方法. 中间的过程是怎样的? Action方法中返回ActionResult对象后,如何到达View的? 本文 ...

  5. MVC防止CSRF攻击

    可能我们大多数人做web的时候不会太注意这个问题,但是这是一个很重要的一个点.我们写代码写业务的时候也应该从各方面多思考. 首先就是先简单介绍下什么是CSRF CSRF 全程是 Cross-site ...

  6. JSP开发--MVC模式(三)

    MVC(Model-View-Controller)模式,即模型-视图-控制器模式 MVC1和MVC2模式 JSP+JavaBean+Servlet实现MVC 一:MVC(Model-View-Con ...

  7. Spring MVC 实战:三种方式获取登录用户信息

    前言 Web 项目中,维持用户登录状态的常用方式有三种,分别是 Cookie.Session.Token,不管哪种方案,都需要获取到用户信息供业务层使用. 由于获取用户信息与具体业务无关,因此在普通的 ...

  8. Spring MVC配置文件的三个常用配置详解

    2019独角兽企业重金招聘Python工程师标准>>> Spring MVC项目中通常会有二个配置文件,sprng-servlet.xml和applicationContext.xm ...

  9. ASP .NET Core Web MVC系列教程三:添加视图

    系列文章目录:ASP .NET Core Web MVC系列教程:使用ASP .NET Core创建MVC Web应用程序 上一个教程:ASP .NET Core Web MVC系列教程二:添加控制器 ...

最新文章

  1. (转载)KVM is required to run this AVD /dev/kvm permission denied Ubuntu Android Studio
  2. 如何在java中实现跨线程的通讯
  3. 监控调优工具详细参数整理
  4. python人人贷爬虫_爬取人人贷网上部分借贷信息以及数据可视化
  5. 如何计算并测量ABAP及Java代码的环复杂度Cyclomatic complexity
  6. 前端多图片上传怎么控制顺序_Web前端经典面试题有哪些 如何能走向高薪之路...
  7. PocketSphinx语音识别系统的编程
  8. 博罗县房产管理局应用级本地容灾备份系统采购项目
  9. python自动处理下载的英文字幕
  10. 上海技术计算机学校学费多少,上海web前端学校学费一般是多少
  11. 全球人工智能人才培养与发展趋势
  12. dblink连接远程mysql_MySQL中使用federated 实现dblink 远程表访问
  13. 放大图片不失真,不变模糊的方法
  14. iOS面试 第三方库
  15. BERT模型—2.BERT模型预训练与微调
  16. HP工作站如何在BIOS下开启、关闭安全芯片
  17. dbeaver连接hive3.1.2,不需添加驱动
  18. 刘氏广传公家族七公子巨波公后裔V0.2
  19. 改进duilib的richedit控件的部分功能
  20. 2023届互联网校招信息⌈提前批⌋⌈秋招⌋ ⌈春招⌋ 第一弹

热门文章

  1. VMware静态地址上网
  2. Linux常用命令笔记2---文件管理4
  3. 解决IE8下父容器背景图片不显示的问题
  4. css字体居中_简单介绍CSS.
  5. 平衡查找树C语言程序,树4. Root of AVL Tree-平衡查找树AVL树的实现
  6. java中utilities类_servletutilities属于哪个java包
  7. android的数据存储方式有哪几种方式,Android存储数据的5种方式
  8. linux 内存 实例,内存管理与使用实例
  9. 脑机互动可提高行动能力
  10. Oculus Connect 4 演讲——留住用户和建立联系(视频) | 【翻译】