CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。
XSS是什么?它的全名是:Cross-site scripting,为了和CSS层叠样式表区分所以取名XSS。是一种网站应用程序的安全漏洞攻击,是代码注入的一种。它允许恶意用户将代码注入到网页上,其他用户在观看网页时就会受到影响。这类攻击通常包含了HTML以及用户端脚本语言。
XSS攻击的主要目的则是,想办法获取目标攻击网站的cookie,因为有了cookie相当于有了seesion,有了这些信息就可以在任意能接进互联网的pc登陆该网站,并以其他人的生份登陆,做一些破坏。预防措施,防止下发界面显示html标签,把</>等符号转义
XSS:
攻击者发现XSS漏洞——构造代码——发送给受害人——受害人打开——攻击者获取受害人的cookie——完成攻击
CSRF:
攻击者发现CSRF漏洞——构造代码——发送给受害人——受害人打开——受害人执行代码——完成攻击
而且XSS容易发现,因为攻击者需要登录后台完成攻击。管理员可以看日志发现攻击者。
而CSRF则不同,他的攻击一直是管理员自己实现的,攻击者只负责了构造代码。
CSRF攻击原理
CSRF攻击原理比较简单,如图1所示。其中Web A为存在CSRF漏洞的网站,Web B为攻击者构建的恶意网站,User C为Web A网站的合法用户。
1. 用户C打开浏览器,访问受信任网站A,输入用户名和密码请求登录网站A;
2.在用户信息通过验证后,网站A产生Cookie信息并返回给浏览器,此时用户登录网站A成功,可以正常发送请求到网站A;
3. 用户未退出网站A之前,在同一浏览器中,打开一个TAB页访问网站B;
4. 网站B接收到用户请求后,返回一些攻击性代码,并发出一个请求要求访问第三方站点A;
5. 浏览器在接收到这些攻击性代码后,根据网站B的请求,在用户不知情的情况下携带Cookie信息,向网站A发出请求。网站A并不知道该请求其实是由B发起的,所以会根据用户C的Cookie信息以C的权限处理该请求,导致来自网站B的恶意代码被执行。
CSRF漏洞一般分为站外和站内两种类型。
CSRF站外类型的漏洞本质上就是传统意义上的外部提交数据问题。通常程序员会考虑给一些留言或者评论的表单加上水印以防止SPAM问题(这里,SPAM可以简单的理解为垃圾留言、垃圾评论,或者是带有站外链接的恶意回复),但是有时为了提高用户的体验性,可能没有对一些操作做任何限制,所以攻击者可以事先预测并设置请求的参数,在站外的Web页面里编写脚本伪造文件请求,或者和自动提交的表单一起使用来实现GET、POST请求,当用户在会话状态下点击链接访问站外Web页面,客户端就被强迫发起请求。
CSRF站内类型的漏洞在一定程度上是由于程序员滥用$_REQUEST类变量造成的。在一些敏感的操作中(如修改密码、添加用户等),本来要求用户从表单提交发起POST请求传递参数给程序,但是由于使用了$_REQUEST等变量,程序除支持接收POST请求传递的参数外也支持接收GET请求传递的参数,这样就会为攻击者使用CSRF攻击创造条件。一般攻击者只要把预测的请求参数放在站内一个贴子或者留言的图片链接里,受害者浏览了这样的页面就会被强迫发起这些请求。
举个例子来说吧(受害者的网址是a.cn,攻击者的网址是b.cn)攻击者想要在某个网站(网站是某个开源CMS)添加上另一个管理员,但是这个网站并没有XSS漏洞。怎么办呢?这时攻击者发现了这个开源CMS后台添加管理员时并没有加入验证码或则token,只需要输入要添加的管理员账号和密码点击确定就可以添加管理员账户了。这时和我一样聪明的攻击者在自己的服务器上建立了一个html文件(假设地址是b.cn/index.html)。然后就给网站管理员发邮件等等,诱使管理员打开b.cn/index.html。当管理员打开后(这时管理员正在网站后台,或则管理员的session并没有失效的话),就可以神不知鬼不觉的在网站后台添加了一个管理员账户。
CSRF 漏洞检测
检测CSRF漏洞是一项比较繁琐的工作,最简单的方法就是抓取一个正常请求的数据包,去掉Referer字段后再重新提交,如果该提交还有效,那么基本上可以确定存在CSRF漏洞。
随着对CSRF漏洞研究的不断深入,不断涌现出一些专门针对CSRF漏洞进行检测的工具,如CSRFTester,CSRF Request Builder等。
防御CSRF攻击:
目前防御 CSRF 攻击主要有三种策略:验证 HTTP Referer 字段;在请求地址中添加 token 并验证;在 HTTP 头中自定义属性并验证。
相关推荐
目录:一、CSRF介绍二、CSRF攻击的危害三、CSRF攻击原理及过程四、CSRF漏洞检测五、CSRF漏洞预防六、最后聊聊xssCSRF(Cross-siterequestforgery)跨站请求伪造,也被称为“OneClickAttack”或者SessionRiding,通常...
CSRF 攻击与防御的基本研究摘要 CSRF(Cross-Site Request Forgery,跨站请求伪造)是一种常见的 web 安全漏洞,通过欺骗服务器执行未经授权的操作,危害到用户的安全。鉴于 CSRF 漏洞的严重性和普遍性,本文将对 ...
CSRF(跨站请求伪造)攻击...总之,CSRF攻击是一种严重的安全威胁,开发者应当采取多种防御措施,如Token验证、Referer检查等,确保Web应用程序的安全性。同时,定期进行安全审计和漏洞扫描是预防CSRF攻击的关键步骤。
在讨论CSRF攻击时,我们需要理解其基本原理、常见场景、危害以及防御策略。 CSRF攻击的原理是,攻击者构造一个恶意的请求链接或表单,当受害者在不知情的情况下点击或访问这个链接时,浏览器会附带受害者已登录网站...
### 浅谈CSRF攻击方式 #### 一、CSRF是什么? CSRF(Cross-Site Request Forgery,跨站请求伪造)是一种常见的网络攻击手段,它利用用户在浏览器中保存的有效凭证(如Cookie等),通过伪装成受害者的身份对目标...
当前防御 CSRF 攻击主要有三种策略: 1. 验证 HTTP Referer 字段 根据 HTTP 协议,在 HTTP 头中有一个字段叫 Referer,它记录了该 HTTP 请求的来源地址。在通常情况下,访问一个安全受限页面的请求来自于同一个网站...
在基于JSP的Java Web项目中,了解如何防御CSRF攻击至关重要,因为这可以保护用户的敏感数据和应用的完整性。 **CSRF攻击原理** CSRF攻击通常发生在用户已登录一个网站并保持会话的情况下,攻击者通过构造恶意链接...
你这可以这么理解CSRF攻击:攻击者盗用了你的身份,以你的名义发送恶意请求。CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账......造成的问题包括:个人隐私泄露...
CSRF漏洞防御非常重要,需要采用多种方法来防御CSRF攻击。验证码防御、Referer Check防御、Anti CSRF Token防御和防止Token泄露都是非常重要的防御方法。只有通过这些方法的结合,才能更好地防御CSRF攻击。
如何防御CSRF攻击.zip
### CSRF攻击的应对之道 #### 一、CSRF攻击概述 **CSRF(Cross-Site Request Forgery,跨站请求伪造)**是一种网络攻击手段,它利用用户在浏览器中的认证状态,通过伪造用户请求的方式对目标网站进行非法操作。...
了解攻击者的攻击方式,可以更好地防御 CSRF 漏洞。 2. 简单代码模型分析:其次,需要了解服务器如何验证用户的请求,了解服务器如何判断用户的请求是否合法。了解服务器的验证逻辑,可以更好地防御 CSRF 漏洞。 3...
CSRF攻击是Web应用安全中一个常见的问题, Referer头可以用来防御CSRF攻击,但是攻击者可以通过绕过Referer技巧来欺骗服务器。因此,Web开发者需要采取多种防御措施来防御CSRF攻击,例如验证Token、双重验证、验证码...
防御技术涉及面很广,包括了Web页面盗窃、跨站脚本攻击、SQL注入攻击和GoogleHacking等攻击手段的防御,以及网页验证码和整体Web攻击防御策略。网页验证码是一种防止自动化工具进行恶意操作的技术,比如自动提交表单...
简解:CSRF的原理及防御
**Elgg 系统 CSRF 攻击实验** Elgg 是一个开源社交网络平台,它提供了构建自定义社交网络的功能。然而,如同任何复杂的Web应用程序,Elgg 也可能存在安全漏洞,其中一种常见的威胁是跨站请求伪造(CSRF,Cross-Site...
Spring Boot 中使用 Spring Security 防止 CSRF 攻击 CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF。CSRF 攻击可以盗用用户的...