MVC 防止CSRF -- AntiForgeryToken

1. 标配版

Home.cshtml

<form method=‘POST‘ action=‘Home/Subscribe‘ >
    @Html.AntiForgeryToken()    <input type="email" />
    <input type="submit" value="Subscribe"  />
</form>

HomeController

1 [HttpPost]
2 [ValidateAntiForgeryToken]
4 public ActionResult Subscribe(string email)
5 {
6 }

form method =‘POST‘ @Html.AntiForgeryToken() [HttpPost] [ValidateAntiForgeryToken]  缺一不可

原理:

@Html.AntiForgeryToken() 会在页面生成如下name=‘__RequestVerificationToken‘ 的input value 是随机字符串,每次刷新页面会不一样

1 <input name="__RequestVerificationToken" value="cMNPTS8iRvJuznErspwm+G/vd1Iec0/egpX4j8trlQtvWE9RMiifCd3/eNUzLCoi+m/w4qI2HbqkvHV7Js8WBeFbl3XWVbva4RjE2eSQHu+8xx5391x1W86ZbtSFdZp98h7cV3Dp/9erZjy5p2LO4LKvGEyGW3Dz73YTiNJSTwU=" type="hidden">

form POST提交会将表单内的数据加入request body , 所以 __RequestVerificationToken 也会在request 中。 同时request 里会有一个 __RequestVerificationToken_lw_ 的cookie, cookie的值是经过加密的,所以会跟页面上取到的值不一样。到了Server 端,[HttpPost]接收POST数据,[ValidateAntiForgeryToken] check request __RequestVerificationToken  和cookie 的值是否一致。如果一致执行Action, 不一致页面提示需要AntiforgeryToken.

时间: 2024-07-28 18:19:30

MVC 防止CSRF -- AntiForgeryToken的相关文章

ASP.NET MVC与CSRF(跨站脚本)攻击

CSRF 一 何为CSRF CSRF(Cross-site request forgery跨站请求伪造,也被称成为"one click attack"或者session riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用.需要注意的是,CSRF与XSS的区别,CSRF是其他网站进行对你的网站的攻击. 关于CSRF的详细信息请看:https://baike.baidu.com/item/CSRF/2735433 二 CSRF的危害 对CSRF进行简单了解后,我们先来看看

ASP.NET MVC 防止 CSRF 的方法

MVC中的Html.AntiForgeryToken()是用来防止跨站请求伪造(CSRF:Cross-site request forgery)攻击的一个措施,它跟XSS(XSS又叫CSS:Cross-Site-Script),攻击不同,XSS一般是利用站内信任的用户在网站内插入恶意的脚本代码进行攻击,而CSRF则是伪造成受信任用户对网站进行攻击. 举个简单例子,譬如整个系统的公告在网站首页显示,而这个公告是从后台提交的,我用最简单的写法: 网站后台(Home/Index页面)设置首页公告内容,

MVC防止CSRF攻击

可能我们大多数人做web的时候不会太注意这个问题,但是这是一个很重要的一个点.我们写代码写业务的时候也应该从各方面多思考. 首先就是先简单介绍下什么是CSRF CSRF 全程是 Cross-site request forgery 中文意思就是跨站请求伪造.和跨站脚本XSS不同,XSS的特点是利用站内受信任的用户,将代码植入到提供给其它用户使用的页面中,但是CSRF的特点是利用你的身份去做一些服务端认为合法的请求.可能我们很多人都会出现qq空间被莫名的发好多广告信息,他的流程就是 比如说我们登陆

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

参考: http://www.myhack58.com/Article/html/3/7/2012/36142_6.htm http://blog.csdn.net/jasontome/article/details/7215468

10 Points to Secure Your ASP.NET MVC Applications.

原文链接:http://www.codeproject.com/Articles/1116318/Points-to-Secure-Your-ASP-NET-MVC-Applications 很多.net的程序员在交付.编写高性能的Asp.net Mvc代码等方面都做的很棒.但当谈及安全方面,却没有一个比较好的方案. 这里,我们将讲述10个使我们的Mvc代码更安全的建议.假如你是MVC新手,建议先了解下MVC. 错误的安全配置(必须设置自定义错误页) 在这种攻击中,攻击者截取并修改用户提交的数据

asp.net MVC 安全性[笔记]

1. 跨站脚本(XSS) 1.1 介绍 1.1.1 被动注入,利用输入html,javascript 等信息伪造链接,图片等使用提交信息,调转页面等 1.1.2 主动注入,黑客主动参与攻击,不会傻等倒霉的用户上钩 1.2 防御 1.2.1 HTML 编码 Html.Encode 1.2.2 HTML 属性编码 Html.AttributeEncode 1.2.3 url 编码 URL.Encode 1.2.4 java script 编码 Ajax.JavaScriptStringEncode

读书笔记[ASP.NET+MVC4+Web+编程]

模型:数据和业务逻辑 视图:展示 控制器:接收视图输入数据,通过模型层业务逻辑处理后 返回给视图 分离关注点(模型 视图 控制器).惯例优先原则 browser-->routing-->controller<--view-->browser 控制器是告诉下一步该做什么而不是该怎么做,如显示视图则返回actionresults. 定位视图:优先查找对应文件夹,其次查找shared文件夹 razor:代码段.代码块 部分视图 @Html.Partial(),PartialView()

SpringMVC利用拦截器防止SQL注入

springMVC防SQL注入的讲解,慕课网笔记 http://www.imooc.com/article/6137 Spring MVC防御CSRF.XSS和SQL注入攻击,博客园笔记 http://www.cnblogs.com/Mainz/archive/2012/11/01/2749874.html

MVC Html.AntiForgeryToken() 防止CSRF攻击

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