CSRF是什么

Fanly 问答 2020-08-31 01:12:01 阅读(...)

跨站请求伪造(Cross-site request forgery)通常缩写为CSRF或者XSRF, 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法,CSRF利用的是网站对用户网页浏览器的信任。

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

跨站请求伪造 Cross-site request forgery

跨站请求伪造(英语:Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF, 是一种挟制用户在当前已登录的 Web 应用程序上执行非本意的操作的攻击方法。跟跨网站脚本(XSS)相比,XSS 利用的是用户对指定网站的信任,CSRF 利用的是网站对用户网页浏览器的信任。

跨站请求攻击,简单地说,是攻击者通过一些技术手段欺骗用户的浏览器去访问一个自己曾经认证过的网站并运行一些操作(如发邮件,发消息,甚至财产操作如转账和购买商品)。由于浏览器曾经认证过,所以被访问的网站会认为是真正的用户操作而去运行。这利用了 web 中用户身份验证的一个漏洞:简单的身份验证只能保证请求发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的。

CSRF 可以做什么

你这可以这么理解 CSRF 攻击:攻击者盗用了你的身份,以你的名义发送恶意请求。CSRF 能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账……造成的问题包括:个人隐私泄露以及财产安全。

CSRF 漏洞现状

CSRF 这种攻击方式在 2000 年已经被国外的安全人员提出,但在国内,直到 06 年才开始被关注,08 年,国内外的多个大型社区和交互网站分别爆出 CSRF 漏洞,如:NYTimes.com(纽约时报)、Metafilter(一个大型的 BLOG 网站),YouTube 和百度 HI……而现在,互联网上的许多站点仍对此毫无防备,以至于安全业界称 CSRF 为“沉睡的巨人”。

防御措施

检查 Referer 字段

HTTP 头中有一个 Referer 字段,这个字段用以标明请求来源于哪个地址。在处理敏感数据请求时,通常来说,Referer 字段应和请求的地址位于同一域名下。以上文银行操作为例,Referer 字段地址通常应该是转账按钮所在的网页地址,应该也位于 www.leixue.com 之下。而如果是 CSRF 攻击传来的请求,Referer 字段会是包含恶意网址的地址,不会位于 www.leixue.com 之下,这时候服务器就能识别出恶意的访问。

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

添加校验 token

由于 CSRF 的本质在于攻击者欺骗用户去访问自己设置的地址,所以如果要求在访问敏感数据请求时,要求用户浏览器提供不保存在 cookie 中,并且攻击者无法伪造的数据作为校验,那么攻击者就无法再运行 CSRF 攻击。这种数据通常是窗体中的一个数据项。服务器将其生成并附加在窗体中,其内容是一个伪随机数。当客户端通过窗体提交请求时,这个伪随机数也一并提交上去以供校验。

正常的访问时,客户端浏览器能够正确得到并传回这个伪随机数,而通过 CSRF 传来的欺骗性攻击中,攻击者无从事先得知这个伪随机数的值,服务端就会因为校验 token 的值为空或者错误,拒绝这个可疑请求。

收藏 0个人收藏
走进科技生活方式

评论交流

泪雪默认头像 请「登录」后参与评论
  1. 加载中..

相关推荐

  • SameSite

    SameSite是什么

    SameSite是Cookie中的一个属性用来限制第三方Cookie,从而减少安全风险。Chrome 51 开始,浏览器的Cookie新增加了一个SameSite属性,用来防止CSRF攻击和用户追踪。
  • Yii 框架

    Yii框架是什么

    Yii 是一个 高性能 的,适用于开发WEB 2.0应用的PHP框架。自带丰富的功能,包括 MVC,DAO/ActiveRecord,I18N/L10N,缓存,身份验证和基于角色的访问控制,脚手架,测试等,可显著缩短开发时间。
  • Jsonp

    Jsonp 是什么

    JSONP是数据格式JSON的一种“使用模式”,可以让网页从别的网域要数据,利用script元素开放策略,网页可以从其他来源动态产生的JSON数据,而这种使用模式就是所谓的 JSONP。
  • Django

    Django 是什么

    Django是一个Python框架。开放源代码的Python Web应用框架,采用了MVT的软件设计模式,即模型Model,视图View和模板Template。使用这种架构,程序员可以方便、快捷地创建高品质、易维护、数据库驱动的应用程序。
  • Garbage disposer 垃圾处理器

    垃圾处理器不能处理什么垃圾

    垃圾处理器不可以处理牛奶盒、塑料袋、玻璃、金属等;动物毛发和大量热油;较大的骨棒;贝壳类不易被粉碎,还可能对机器刀片造成伤害;粽子叶和玉米皮,属于长纤维结构无法被磨得粉碎;猪皮和鱼鳞会造成机器噪音大和研磨不到位,大量的鱼鳞会造成下水道堵塞。
  • Garbage disposer 垃圾处理器

    如何选垃圾处理器

    选垃圾处理器需要考虑电机功率,直流电机技术更加成熟稳定,交流电机的质量相对轻一些;推荐选择无线开关,可免打孔不破坏水槽,随意粘贴,更安全;选择适合容量的垃圾处理器;自动反转功能的机器在遇到卡机时会自动恢复机器的运转;最后还要看噪音大小。