关于CSRF攻击及mvc中的解决方案 [ValidateAntiForgeryToken]
来源:互联网 发布:php autoload怎么用 编辑:程序博客网 时间:2024/05/21 17:36
一.CSRF是什么?
CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF。
二.CSRF可以做什么?
你这可以这么理解CSRF攻击:攻击者盗用了你的身份,以你的名义发送恶意请求。CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账......造成的问题包括:个人隐私泄露以及财产安全。
三.CSRF漏洞现状
CSRF这种攻击方式在2000年已经被国外的安全人员提出,但在国内,直到06年才开始被关注,08年,国内外的多个大型社区和交互网站分别爆出CSRF漏洞,如:NYTimes.com(纽约时报)、Metafilter(一个大型的BLOG网站),YouTube和百度HI......而现在,互联网上的许多站点仍对此毫无防备,以至于安全业界称CSRF为“沉睡的巨人”。
四.CSRF的原理
从上图可以看出,要完成一次CSRF攻击,受害者必须依次完成两个步骤:
1.登录受信任网站A,并在本地生成Cookie。
2.在不登出A的情况下,访问危险网站B。
看到这里,你也许会说:“如果我不满足以上两个条件中的一个,我就不会受到CSRF的攻击”。是的,确实如此,但你不能保证以下情况不会发生:
1.你不能保证你登录了一个网站后,不再打开一个tab页面并访问另外的网站。
2.你不能保证你关闭浏览器了后,你本地的Cookie立刻过期,你上次的会话已经结束。(事实上,关闭浏览器不能结束一个会话,但大多数人都会错误的认为关闭浏览器就等于退出登录/结束会话了......)
3.上图中所谓的攻击网站,可能是一个存在其他漏洞的可信任的经常被人访问的网站。
以上内容转自:http://www.cnblogs.com/hyddd/archive/2009/04/09/1432744.html
具体步骤:
1、在Html表单里面使用了@Html.AntiForgeryToken()就可以阻止CSRF攻击。
2、相应的我们要在Controller中也要加入[ValidateAntiForgeryToken]过滤特性。该特性表示检测服务器请求是否被篡改。注意:该特性只能用于post请求,get请求无效。
3、至于JS,我们的项目中引用的是<script src="@Url.Content("~/Content/js/jqueryToken-1.4.2.js")" type="text/javascript"></script>
在JS时要使用: $.ajaxAntiForgery才行,
如:
$.ajaxAntiForgery({
type: "post",
data: { GroupName: $("#GroupName").val(), GroupPhones: $("#GroupPhones").val() },
dataType: "json",
url: "/Event/Mass/AddGroup",
success: function (data) {
if (data) {
alert("添加成功 ");
$.unblockUI();
}
else {
alert("添加失败 ");
}
}
})
注:对数据进行增删改时要防止csrf攻击!
- 关于CSRF攻击及mvc中的解决方案 [ValidateAntiForgeryToken]
- 关于CSRF攻击及mvc中的解决方案 [ValidateAntiForgeryToken]
- 关于CSRF攻击及mvc中的解决方案 [ValidateAntiForgeryToken]
- 关于CSRF攻击及mvc中的解决方案 [ValidateAntiForgeryToken]
- 关于CSRF攻击及mvc中的解决方案 [ValidateAntiForgeryToken]
- CSRF攻击及预防
- CSRF攻击及预防
- csrf攻击中的jsonp
- MVC中防止CSRF攻击
- Spring Mvc 防御CSRF攻击
- CSRF攻击原理及预防
- CSRF攻击介绍及防御
- CSRF攻击及防御措施
- csrf攻击原理及防备
- CSRF攻击介绍及防御
- CSRF攻击原理及防御
- CSRF攻击方式及解决方法
- CSRF攻击原理及防御
- 17.1.2 注册函数input_register_device()(1)
- 可视化HTML编辑器:xhEditor、FCKeditor
- 总有一天你将破蛹而出
- log4j.xml参考
- Prim算法实现最小生成树(图模型+小根堆)
- 关于CSRF攻击及mvc中的解决方案 [ValidateAntiForgeryToken]
- 使用缓冲池方式,进行TCP通信
- java多线程相关
- 设计模式之状态模式
- 用 UNetbootin 从 ISO 文件安装双系统
- POJ 1590解题报告
- CoreText总结
- 怎么控制安卓应用的权限
- AVPlayer 多媒体播放器