CSRF的概念可以分为两类:XSS和混淆代理。
混淆代理中的“代理”是指用户的浏览器。CSRF是基于浏览器的工作方式运作的。用户登录到一个站点后,用户的信息将会存储在cookie中(会话cookie或者持久cookie),通过这两种cookie中的任何一种,浏览器会告诉站点这是一个真是用户发出的请求。
使用XSS加混淆代理来实现对用户攻击的能力正式CSRF的核心。
CSRF使得用户在不知情的情况在,使用自己真实的用户信息,去执行了黑客植入的恶意的脚本或者链接,造成非正常的操作。
阻止CSRF
使用三种方法来阻止CSRF:
(1)令牌验证:
ASP.NET MVC提供了一个阻止CSRF攻击的好办法,它通过验证用户是否自愿地向站点提交数据来达到防御攻击的目的。实现这一方法最简单的方式就是,在每个表单请求中插入一个 包含唯一值的隐藏输入元素。@Html.AntiForgeryToken(),该方法将会生成一个Hidden类型的input控件,并带有一个加密值。该值将与作为会话cookie存储在用户浏览器中的另一个值匹配,在提交表单时,ActionFilter就会验证这两个值是否匹配(在对应的Action上添加ValidateAntiForgeryToken特性)。这种方法能够阻止大部分的CSRF攻击,但不能很好地防御所有的CSRF。
(2)幂等的GET请求
如果一个操作是幂等的,那么重复执行多次操作而不改变执行结果。一般来说使用POST请求修改数据库中或者网站上的内容,就可以有效地防御全部的CSRF攻击。
(3)HttpReferrer验证
HttpReferrer验证通过ActionFilter处理。需自定义过滤器,并在过滤器中判断filterContext.HttpContext.Request.UrlReferrer.Host是否与站点名称相同。
2、Web应用程序中的安全向量 -- CSRF/XSRF(跨站请求伪造)的更多相关文章
-
Web安全相关(一):CSRF/XSRF(跨站请求伪造)和XSS(跨站脚本)
XSS(Cross Site Script):跨站脚本,也就是javascript脚本注入,一般在站点中的富文本框,里面发表文章,留言等表单,这种表单一般是写入数据库,然后再某个页面打开. 防御: 1 ...
-
web 安全 &; web 攻防: XSS(跨站脚本攻击)和 CSRF(跨站请求伪造)
web 安全 & web 攻防: XSS(跨站脚本攻击)和 CSRF(跨站请求伪造) XSS(跨站脚本攻击)和CSRF(跨站请求伪造) Cross-site Scripting (XSS) h ...
-
Web安全之CSRF(跨站请求伪造)
CSRF(跨站请求伪造)概述 Cross-site request forgery 简称为"CSRF",在CSRF的攻击场景中攻击者会伪造一个请求(这个请求一般是一个链接),然后欺 ...
-
Web 应用程序中的安全向量 – ASP.NET MVC 4 系列
Web 程序运行在标准的.基于文本的协议(HTTP 和 HTML)之上,所以特别容易受到自动攻击的伤害.本章主要介绍黑客如何滥用应用程序,以及针对这些问题的应对措施. 威胁:跨站脚本 ...
-
web前端安全 XSS跨站脚本 CSRF跨站请求伪造 SQL注入
web安全,从前端做起,总结下web前端安全的几种技术: 1,XSS XSS的全称是Cross Site Scripting,意思是跨站脚本,XSS的原理也就是往HTML中注入脚本,HTML指定了脚本 ...
-
Web安全测试之跨站请求伪造(CSRF)篇
跨站请求伪造(即CSRF)被Web安全界称为诸多漏洞中“沉睡的巨人”,其威胁程度由此“美誉”便可见一斑.本文将简单介绍该漏洞,并详细说明造成这种漏洞的原因所在,以及针对该漏洞的黑盒测试与灰盒子测试具体 ...
-
Web安全相关(二):跨站请求伪造(CSRF/XSRF)
简介 CSRF(Cross-site request forgery跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对 ...
-
spring-security中的csrf防御机制(跨域请求伪造)
什么是csrf? csrf又称跨域请求伪造,攻击方通过伪造用户请求访问受信任站点.CSRF这种攻击方式在2000年已经被国外的安全人员提出,但在国内,直到06年才开始被关注,08年,国内外的多个大型社 ...
-
Web框架之Django_09 重要组件(Django中间件、csrf跨站请求伪造)
摘要 Django中间件 csrf跨站请求伪造 一.Django中间件: 什么是中间件? 官方的说法:中间件是一个用来处理Django的请求和响应的框架级别的钩子.它是一个轻量.低级别的插件系统,用于 ...
随机推荐
-
rootkit后门检查工具RKHunter
---恢复内容开始--- rkhunter简介: 中文名叫"Rootkit猎手", rkhunter是Linux系统平台下的一款开源入侵检测工具,具有非常全面的扫描范围,除了能够检 ...
-
由于OCR文件损坏造成Oracle RAC不能启动的现象和处理方法
v$cluster_interconnects 集群节点间通信使用的IP地址 错误信息 使用了公网进行连接 SQL> select * from v$cluster_interconnects; ...
-
Windows服务调试小结(附Demo)
本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 阅读目录 介绍 搭建环境 调试方式 Demo下载 本文版权归mephisto和博客园共有,欢迎转载,但须 ...
-
用C#实现网络爬虫(二)
上一篇<用C#实现网络爬虫(一)>我们实现了网络通信的部分,接下来继续讨论爬虫的实现 3. 保存页面文件 这一部分可简单可复杂,如果只要简单地把HTML代码全部保存下来的话,直接存文件就行 ...
-
3.跟我学solr---使用solrj加入索引
上一章讲了怎么使用solr admin向solrserver加入索引,Solr 是一个独立的企业级搜索应用server.它对外提供类似于 Web-service 的 API 接口. 用户能够通过 ht ...
-
QuickWebApi:使用Lambada方式,完成对WebApi的开发和调用。
QuickWebApi 目的:使用Lambada方式,完成对WebApi的开发和调用. 缘由:为了解耦服务和展现,将越来越多的使用WebApi提供各种服务:随着服务的细化,WebApi的接口将越来越多 ...
-
leaflet地图在选项卡中不正常显示
可以在选项卡中加个click事件,调用下 <a href="#tab1" >tab1</a><a href="#tab2" onc ...
-
OpenStack Newton版本Ceph集成部署记录
2017年2月,OpenStack Ocata版本正式release,就此记录上一版本 Newton 结合Ceph Jewel版的部署实践.宿主机操作系统为CentOS 7.2 . 初级版: 192. ...
-
js的事件冒泡,事件捕获
addEventListener() 方法可以指定 "useCapture" 参数来设置传递事件类型:false→冒泡 true→捕获 默认false. ...
-
python学习2:turtle的使用蟒蛇绘制的学习以及自己摸索的等边三角形绘制(跟随mooc学习)
首先先放上蟒蛇的绘制程序 import turtle#引入外部库#def保留字用于 定义函数 def drawSnake(rad,angle,len,neckrad): for i in range( ...