Cross-site request forgery:跨站请求伪造,也被称成为“one click attack”或者session riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,并且攻击方式几乎相左。XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。
示例和特性
CSRF攻击通过在授权用户访问的页面中包含链接或者脚本的方式工作。例如:一个网站用户Bob可能正在浏览聊天论坛,而同时另一个用户Alice 也在此论坛中,并且后刚刚发布了一个具有Bob银行链接的图片消息。设想一下,Alice编写了一个在Bob的银行站点上进行取款的form提交的链接,并将此链接作为图片tag。如果Bob的银行在cookie中保存他的授权信息,并且此cookie没有过期,那么当Bob的浏览器尝试装载图片时将提交这个取款form和他的cookie,这样在没经Bob同意的情况下便授权了这次事务。
CSRF是一种依赖web浏览器的、被混淆过的代理人攻击(deputy attack)。在上面银行示例中的代理人是Bob的web浏览器,它被混淆后误将Bob的授权直接交给了Alice使用。
下面是CSRF的常见特性:
•依靠用户标识危害网站
•利用网站对用户标识的信任
•欺骗用户的浏览器发送HTTP请求给目标站点
•风险在于那些通过基于受信任的输入form和对特定行为无需授权的已认证的用户来执行某些行为的web应用。已经通过被保存在用户浏览器中的cookie进行认证的用户将在完全无知的情况下发送HTTP请求到那个信任他的站点,进而进行用户不愿做的行为。
•使用图片的CSRF攻击常常出现在网络论坛中,因为那里允许用户发布图片而不能使用JavaScript。
防范措施
对于web站点,将持久化的授权方法(例如cookie或者HTTP授权)切换为瞬时的授权方法(在每个form中提供隐藏field),这将帮助网站防止这些攻击。一种类似的方式是在form中包含秘密信息、用户指定的代号作为cookie之外的验证。
另一个可选的方法是“双提交”cookie。此方法只工作于Ajax请求,但它能够作为无需改变大量form的全局修正方法。如果某个授权的 cookie在form post之前正被JavaScript代码读取,那么限制跨域规则将被应用。如果服务器需要在Post请求体或者URL中包含授权cookie的请求,那么这个请求必须来自于受信任的域,因为其它域是不能从信任域读取cookie的。
与通常的信任想法相反,使用Post代替Get方法并不能提供卓有成效的保护。因为JavaScript能使用伪造的POST请求。尽管如此,那些导致对安全产生“副作用”的请求应该总使用Post方式发送。Post方式不会在web服务器和代理服务器日志中留下数据尾巴,然而Get方式却会留下数据尾巴。
尽管CSRF是web应用的基本问题,而不是用户的问题,但用户能够在缺乏安全设计的网站上保护他们的帐户:通过在浏览其它站点前登出站点或者在浏览器会话结束后清理浏览器的cookie。
影响CSRF的因素
CSRF攻击依赖下面的假定:
•攻击者了解受害者所在的站点
•攻击者的目标站点具有持久化授权cookie或者受害者具有当前会话cookie
•目标站点没有对用户在网站行为的第二授权
TechTarget中国原创内容,原文链接:http://www.searchsecurity.com.cn/showcontent_3369.htm
相关推荐
CSRF(英语:Cross-site request forgery)浅析.md
axios0.27.2(axios.min.js)
【标题】"Exploit-DMA-Radius-Manager-4.4.0---Cross-Site-Request-Forgery-CSRF-"揭示了一个针对DMA Radius Manager 4.4.0版本的安全漏洞,该漏洞涉及到跨站请求伪造(CSRF)攻击。这是一种网络安全威胁,允许攻击...
开源项目-gorilla-csrf.zip,gorilla/csrf provides Cross Site Request Forgery (CSRF) prevention middleware for Go web applications & services
CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attacksession riding,缩写为:CSRFXSRF。 二.CSRF可以做什么? 你这可以这么理解CSRF攻击:攻击者盗用了你的身份,以你的...
在Web应用程序开发中,跨站请求伪造(CSRF,Cross-Site Request Forgery)是一种常见且危险的安全威胁。它允许恶意用户在受害者(已登录用户)的浏览器中执行非预期的操作。Ring-Anti-Forgery是Clojure Web开发框架...
国内外的信息安全厂商当前能防范的针对Web服务器的攻击类型主要有SQL注入攻击、XSS攻击、HTTP Flood攻击、爬虫、CGI扫描、漏洞扫描、盗链防护、CSRF(Cross-Site Request Forgery)攻击防护等。但事实上,能防范和能...
Cross-site request forgery 跨站请求伪造常见的跨站请求伪造:微博关注操作:get,访问一条链接就关注成功 【除非是某种不受限的api】
CSRF 的全称是Cross-site request forgery,即跨站请求伪造,我们可以简单的理解这种漏洞为,攻击者利用被攻击者的身份发起了某些被攻击者原本不知情的网络请求。包括以被攻击者的身 份发布一条微博,以被攻击者的...
然而,PHP技术也存在一些安全隐患,例如SQL Injection、Cross-Site Scripting(XSS)、Cross-Site Request Forgery(CSRF)等等。因此,在使用PHP技术时,需要采取相应的安全措施,例如验证用户输入、使用prepared ...
CSRF(Cross-Site Request Forgery,跨站请求伪造)是一种常见的网络安全漏洞,攻击者通过诱导用户执行非预期的操作来操纵他们已登录的Web应用程序。`CSRF-Request-Builder`是一个专门针对此威胁的测试工具,其核心...
** - 答案: - CSRF(Cross-Site Request Forgery)是一种攻击方式,利用用户在其他网站的已认证状态来执行非预期的操作。防范方法包括使用 CSRF Token 和检查 Referer 头。3. **解释 TCP 三次握手和四次挥手的过程...
4 改进了 Cross-Site Request Forgery (CSRF) 保护 5 对象级别的权限 6 匿名用户权限 7 更灵活的用户名请求 8 E-mail 后端 9 更强大的 if 标签 参阅 Django 1.2 发布公告及发布注记可了解该版 本的变化详情。...
或者,如果它是关于网络安全的,我们可能需要探讨HTML注入攻击、XSS(Cross-Site Scripting)或CSRF(Cross-Site Request Forgery)等概念。 如果你能提供更多的上下文或详细描述,我将能够生成一个更加具体和详细...
Exploiting Cross Site Request Forgery Attacking Cryptographic implementation flaws AJAX, HTML5 and client side attacks Fuzzing Web Applications Using Automated Scanners on Web Applications
3. **CSRF(Cross-site request forgery)**: - CSRF攻击是通过伪造用户的请求,让受害者在不知情的情况下执行攻击者想要的操作。 - 防御CSRF的方法包括使用令牌(token)、检查Referer头、要求用户重新验证身份...