asp.net mvc 2被遗忘的

ASP.NET MVC2 防伪标记
本文介绍ASP.NET MVC2中防伪标记(Anti-Forgery Token)的使用方法,通过示例展示了如何在视图中生成防伪标记并在控制器中验证,以防止跨站请求伪造攻击。

======================================================
注:本文源代码点此下载
======================================================

asp.net mvc 2被遗忘的

2010-06-11 11:19

by

zilchwei,

2325

visits,

收藏,

编辑

我们可以称作令牌认证.

操作系统:windows server 2008 r2

本文来自zilchwei.转载请注明出处!

开发软件:visual studio 2010中文版+asp.net mvc 2.0中文版.

浏览器信息:ie8

我们在学习asp.net mvc的时候往往在考虑

index的view输入数据 然后post到aboutcontroller做处理

我们做一个简单的数据输入页面

index的html代码如下:

:html.beginform("about","home")%>

用户名:input type="text" name="zilhwei" />

html.endform(); %>

本文来自zilchwei.转载请注明出处!

很简单 我们输入一个用户名然后post到homecontroller中about这个actionresult去做一个处理

当然 我们这里会生成html代码 如果代码被修改会怎么样呢?这个不做对的探讨.

我们对代码进行修改

:html.beginform("about","home")%>

:html.antiforgerytoken() %>

用户名:input type="text" name="zilchwei" />

html.endform(); %>

我们的view生成了这样的html代码

代码

form action="/home/about" method="post">input name="__requestverificationtoken" type="hidden" value="yuqlzbscuslwvdrka50t4tey3qypxwfuh96mruwl6uf10pcom3kei2cgafbisrre" />

用户名:input type="text" name="zilchwei" />

form>

接着我们接收的aboutconrtoller也要做出相应的修改.

[httppost]

[validateantiforgerytoken]

public actionresult about()

{

return view();

}

这里需要说明的是validateantiforgerytoken其实就是一个actionfilter

用户验证是否为指定页面提交的值.

本文来自zilchwei.转载请注明出处!

这样测试肯定是没问题的

那么我们测试下如果未生成令牌会怎么样,修改index的代码

:html.beginform("about","home")%>

用户名:input type="text" name="zilchwei" />

html.endform(); %>

我们验证结果如图

就这样欢迎大家和我一起交流.端午节快乐!

本文来自zilchwei.转载请注明出处!

绿色通道:好文要顶关注我收藏该文与我联系

categories:

asp.net mvc

add your comment

14 条回复

1995028

#1楼 tt.net 2010-06-11 11:21

虽然.net 4.0新加了

这里用不着吧??

回复 引用 查看

#2楼[楼主] zilchwei 2010-06-11 11:30

这里没有对beginform做研究主要是antiforgerytoken做一个介绍

当然 我以后会注意细节上的问题

回复 引用 查看

#3楼 小no 2010-06-11 11:57

ajax调用时是有问题的,你应该把ajax调用的解决方案也写上

回复 引用 查看

#4楼 jack_xiao 2010-06-11 21:28

"很简单 我们输入一个用户名然后post到about这个controller去做一个处理"

应该是post到 homecontroller中名为about 的action。

回复 引用 查看

#5楼[楼主] zilchwei 2010-06-12 08:17

多谢4楼指正

about这个controller是不存在的 我粗心大意了

回复3楼下次对ajax做一个补充!

回复 引用 查看

#6楼 snowsky 2010-06-12 08:36

不知道博主的代码每次要修改多少次,会不会和我一样,写一段小代码,都会发现丢三落四一大堆...

回复 引用 查看

#7楼 yanghao 2010-06-12 10:52

请问博主,visual studio 2010中文版+asp.net mvc 2.0中文版.用这2个开发工具是用于个人学习研究,还是公司项目用到的?

回复 引用 查看

#8楼[楼主] zilchwei 2010-06-13 08:53

回复6楼!

丢三落四是我的一个不好的习惯

因为我现在2个版本并存

vs2008+asp.net mvc2.0 for2008

visual studio 2010中文版+asp.net mvc 2.0中文版

有时候写的就比较混乱.目前未使用

visual studio 2010中文版+asp.net mvc 2.0中文版做项目开发

还处以

vs2008+asp.net mvc2.0 for2008

回复7楼

visual studio 2010中文版+asp.net mvc 2.0中文版

可以用着公司项目也可以用这个人学习研究.前提是服务器是独立服务器.

如果是购买的虚拟主机那就需要看服务商提供的环境了.

回复 引用 查看

#9楼 bizm 2010-06-26 08:41

这个是用来处理表单重复提交的么?

回复 引用 查看

#10楼[楼主] zilchwei 2010-07-12 15:44

回复9楼!

这个功能我个人认为主要是防止 站外访问

回复 引用 查看

#11楼 天平盛世 2010-10-15 15:58

@yanghao

学习工作都可以,但是公司一般不会使用很新工具和技术,他们更新的比较迟钝,

回复 引用 查看

#12楼 天平盛世 2010-10-15 16:29

看了文章后好迷茫,不知道文章居然没有讲antiforgerytoken的用法

回复 引用 查看

#13楼 天平盛世 2010-10-15 16:31

还有一个问题就是报错

“未提供必要的防伪标记或防伪标记无效”

是validateantiforgerytoken使用的不正确吗

回复 引用 查看

#14楼[楼主] zilchwei 2010-12-23 09:18

楼上 用法已经说的很明白了

回复 引用 查看

注册用户登录后才能发表评论,请 登录 或 注册,返回博客园首页

首页博问闪存新闻园子招聘知识库

最新it新闻:

·ios 5.1 beta3文件预示未来 siri有可能支持 ipad和 ipod touch

·android平台12月广告浏览份额51.6% 超越ios

·测试版ios源代码显示ipad 3或将支持siri

·斯蒂芬·霍金的新电脑

·京东商城2.95亿竞得北京商业地一块

» 更多新闻...

最新知识库文章:

·javascript 面向对象编程

·持续集成之“everything is code”

·持续集成之“软件自我识别”

·持续集成之戏说check-in dance

·什么是闭包。
       我的理解

» 更多知识库文章...

china-pub 2011秋季教材巡展

china-pub 计算机绝版图书按需印刷服务


======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值