本文分享自华为云社区《CSRF跨站请求伪造攻击及防御》,作者: HZDX。

CSRF(Cross-site request forgery)跨站请求伪造,通过伪装来自受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。


什么是CSRF跨站请求伪造

CSRF的定义

CSRF(Cross-site request forgery)跨站请求伪造,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。

可以这样来理解:攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的一个操作,比如以你的名义发送邮件、发消息,盗取你的账号,添加系统管理员,甚至于购买商品、虚拟货币转账等。

CSRF的分类

  • HTML CSRF攻击
  • JSON HiJacking攻击
  • Flash CSRF攻击

CSRF的攻击过程

  • 假设用户A登录银行的网站进行操作,同时也访问了攻击者预先设置好的网站。
  • 用户A点击了攻击者网站的某一个链接,这个链接是http://www.bank.com/xxx指向银行,银行服务器根据这个链接携带的参数会进行转账操作。
  • 银行服务器在执行转账操作之前会进行Session验证,但是由于用户A已经登录了银行网站,攻击者的链接也是www.bank.com,所以攻击的链接就会携带session到服务器。
  • 由于session id是正确的,所以银行会判断操作是由本人发起的,执行转账操作。

CSRF的攻击条件

  • 登录受信任网站A,生成可信的Session
  • 在不登出A的情况下,访问危险网站B,网站B伪造网站A的请求

CSRF跨站请求伪造的预防方法

验证 HTTP Referer 字段

HTTP header中包含一个Referer字段,这个字段用于指明http请求的来源地址。当用户进行正常请求时,此Referer字段应该与请求的地址位于同一个域名下(bank.com)。如果是通过CSRF攻击伪造的请求则此Referer应当包含恶意网址的地址(evil.com)。所以通过对Referer来源地址的校验可以识别出伪造的恶意请求。

这种办法简单易行,工作量低,仅需要在关键访问处增加一步校验。但这种办法也有其局限性,因其完全依赖浏览器发送正确的Referer字段。虽然http协议对此字段的内容有明确的规定,但并无法保证来访的浏览器的具体实现,亦无法保证浏览器没有安全漏洞影响到此字段。并且也存在攻击者攻击某些浏览器,篡改其Referer字段的可能。

在请求地址中添加token并验证

由于CSRF攻击的本质在于攻击者欺骗用户去访问自己设置的请求,所以如果在请求敏感数据时,要求用户浏览器提供不是保存在cookie中并且攻击者无法伪造的数据作为校验条件,那么攻击者就无法伪造未校验的请求进行CSRF攻击。

服务器将其生成并附加在窗体中,其内容是一个伪随机数。当客户端通过表单提交请求时,这个伪随机数也一并提交上去以供校验。正常的访问时,客户端浏览器能够正确得到并传回这个伪随机数,而通过CSRF传来的欺骗性攻击中,攻击者无从获取页面信息得知这个伪随机数的值,服务端就会因为校验token的值为空或者错误,拒绝这个可疑请求。

在HTTP头中自定义属性并验证

这种方法也是使用 token 并进行验证,和上一种方法不同的是,这里并不是把 token 以参数的形式置于 HTTP 请求之中,而是把它放到 HTTP 头中自定义的属性里。

通过 XMLHttpRequest 这个类,可以一次性给所有该类请求加上 csrftoken 这个 HTTP 头属性,并把 token 值放入其中。这样解决了上种方法在请求中加入 token 的不便,同时,通过 XMLHttpRequest 请求的地址不会被记录到浏览器的地址栏,也不用担心 token 会透过 Referer 泄露到其他网站中去。


智能云网

智能云网社区是华为专为开发者打造的“学习、开发、验证、交流”一站式支持与服务平台,该平台涵盖多领域知识。目前承载了云园区网络,云广域网络,数通网络开放可编程,超融合数据中心网络,数通网络设备开放社区共五个场景。为了响应广大开发者需求,还提供了开发者交流、API 体验中心、多媒体课件、SDK工具包、开发者工具以及远程实验室共六大工具,让开发者轻松开发。欢迎各位前来体验。

>>戳我了解更多<<

点击关注,第一时间了解华为云新鲜技术~​

教你轻松解决CSRF跨站请求伪造攻击相关推荐

  1. 【安全牛学习笔记】CSRF跨站请求伪造攻击漏洞的原理及解决办法

    CSRF跨站请求伪造攻击漏洞的原理及解决办法 CSRF,夸张请求伪造漏洞 漏洞的原理及修复方法 1.常见的触发场景 2.漏洞原理:浏览器同源策略 3.DEMO 4.漏洞危害 5.如何避免&修复 ...

  2. CSRF 跨站请求伪造攻击

    1.概念 全称是CSRF 跨站请求伪造攻击,攻击者利用用户已登陆的账号,诱导用户访问已构造好的恶意链接或页面,在用户不之情的情况下,做一些违反用户本意的一些违法操作. 同源策略:协议相同,域名相同,端 ...

  3. XSS跨站脚本攻击与CSRF跨站请求伪造攻击的学习总结。

    之前就了解过这方面的知识,但是没有系统地总结.今天在这总结一下,也让自己在接下来的面试有个清晰的概念. XSS跨站脚本攻击: xss 跨站脚本攻击(Cross Site Scripting),为了不和 ...

  4. XSS跨站脚本攻击与CSRF跨站请求伪造攻击的学习总结

    转载:https://blog.csdn.net/baidu_24024601/article/details/51957270 XSS跨站脚本攻击与CSRF跨站请求伪造攻击的学习总结. <di ...

  5. CSRF跨站请求伪造攻击

    CSRF(Cross-site request forgery)跨站请求伪造 CSRF 背景与介绍 CSRF(Cross Site Request Forgery, 跨站域请求伪造)是一种网络的攻击方 ...

  6. CSRF——跨站请求伪造攻击

    csrf简介 CSRF(Cross-site request forgery),也被称为:one click attack/session riding,中文名称:跨站请求伪造,缩写为:CSRF/XS ...

  7. 【网络安全工程师面试合集】—CSRF跨站请求伪造 攻击及防御

    目录 4.3. CSRF 4.3.1. 简介 4.3.2. 分类 4.3.2.1. 资源包含 4.3.2.2. 基于表单 4.3.2.3. XMLHttpRequest 4.3.3. 防御

  8. 浏览器安全之CSRF跨站请求伪造

    基本概念 跨站请求伪造(Cross-site request forgery)简称CSRF,尽管与跨站脚本漏洞名称相近,但它与跨站脚本漏洞不同.XSS利用站点内的信任用户,而CSRF则通过伪装来自受信 ...

  9. Django之CSRF跨站请求伪造(老掉牙的钓鱼网站模拟)

    首先这是一个测试的代码 请先在setting页面进行下面操作 注释完成后,开始模拟钓鱼网站的跨站请求伪造操作: 前端代码: <!DOCTYPE html> <html lang=&q ...

  10. 【安全牛学习笔记】CSRF跨站请求伪造***漏洞的原理及解决办法

    CSRF跨站请求伪造***漏洞的原理及解决办法 CSRF,夸张请求伪造漏洞 漏洞的原理及修复方法 1.常见的触发场景 2.漏洞原理:浏览器同源策略 3.DEMO 4.漏洞危害 5.如何避免&修 ...

最新文章

  1. 博世发布7款传感器新品 从汽车到消费电子
  2. BIEE建模参考规范
  3. 详解HashMap的内部工作原理
  4. zookeeper centos7 集群部署
  5. Series.str.split([pat, n, expand])
  6. Math.random()取随机数一直为0
  7. bzoj 1654: [Usaco2006 Jan]The Cow Prom 奶牛舞会(Trajan)
  8. 区块链 以太坊 智能合约 运行原理和开发实例
  9. lazada新手卖家必看!教你快速入门东南亚lazada平台
  10. 【LCD1602----LiquidCrystal库的使用1
  11. http(S)系列之(五):android之HttpURLConnection源码解析(1)
  12. [论文阅读] (19)英文论文Evaluation(实验数据集、指标和环境)如何描述及精句摘抄——以系统AI安全顶会为例
  13. angular8封装http服务
  14. 制作分页工具类,实现分页操作JSP+Servlet+数据库
  15. 东莞银行计算机笔试题,中国银行笔试考什么内容
  16. Redis技术架构演进
  17. 实现将html网页中的元素复制到微信编辑器中,并正常呈现排版
  18. 在线文字生成音频工具
  19. 电子书管理软件Calibre使用
  20. AG9311MAQ设计100W USB TYPEC拓展坞资料|AG9311MAQ用于100W USB TYPEC转HDMI带PD快充+U3+SD/CF拓展坞方案说明

热门文章

  1. 图解机器学习算法 | 从入门到精通系列教程(机器学习通关指南·完结)
  2. android graphview使用与感受
  3. mumu模拟器cpu设置_网易mc怎么提高fps
  4. 关于jxls2.6.0的学习以及遇到的问题(八)
  5. Ubuntu11设置VGA分辨率
  6. 连接池实现mysql增删改查_java使用原生MySQL实现数据的增删改查以及数据库连接池技术...
  7. 卸载华为系统wifi服务器,如何安装随行WiFi驱动及如何卸载驱动
  8. 如何在ubuntu-1804中增加swapfile
  9. 【Godot】项目结构设计
  10. 打开Internet信息服务及IIS管理器