码迷,mamicode.com
首页 > Web开发 > 详细

ASP.NET MVC AntiForgeryToken

时间:2017-07-18 13:40:20      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:title   一段   不一致   发送   oss   过程   html   cookie   token   

你开发一个网站,其中有个功能:新闻发布。

你是这样实现的:

1.保存新闻的方法是:/News/Save  POST提交

2.接受两个参数:title和content

有一天,你登录网站(浏览器会保存相关cookie),发布了一条新闻,发布成功。

然后打开了NSFW网站(你站点的相关cookie还在),这个网站等你很久了,他知道你的新闻发布功能的实现,于是在页面中嵌入一段脚本,模拟参数,请求你的保存方法。当然,还带着你的站点的cookie。

你的程序代码当然的处理成功了,所以一条新闻就发布成功了。而整个过程,你还懵逼着。

 

这个就是CSRF。Cross-site request forgery的缩写,中文名称叫跨站请求伪造。

名词很高大上,写在PPT里忽悠几句还能拿个风投。但简单理解就是:攻击者盗用了你的身份,以你的名义发送恶意请求。

重点在“伪造”,如果你能保证你访问每一个网站,都清除上个网站的痕迹的话,你就可以避免此攻击。但是,可能吗?NO!

所以,要在程序层面进行防御,重点是让攻击者无法伪造

 

ASP.NET MVC的做法是:Html.AntiForgeryToken()

会在页面上生成这样一个隐藏域:

技术分享

提交到服务端,使用ValidateAntiForgeryToken特性验证:

技术分享

 

如果服务端请求中没有__RequestVerificationToken参数:

技术分享

或者参数的值不一致:

技术分享

这样,就能很大程度上防止伪造,进行CSRF攻击了。

 

ASP.NET MVC AntiForgeryToken

标签:title   一段   不一致   发送   oss   过程   html   cookie   token   

原文地址:http://www.cnblogs.com/talentzemin/p/7199815.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!