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

攻击通过在授权用户访问的页面中包含链接或者脚本的 方式工作。例如:一个网站用户Bob可能正在浏览聊天论坛,而同时另一个用户Alice也在此论坛中,并且后者刚刚发布了一个具有Bob银行链接的图片消 息。设想一下,Alice编写了一个在Bob的银行站点上进行取款的form提交的链接,并将此链接作为图片tag。如果Bob的银行在cookie中保 存他的授权信息,并且此cookie没有过期,那么当Bob的浏览器尝试装载图片时将提交这个取款form和他的cookie,这样在没经Bob同意的情况下便授权了这次事务。

CSRF是一种依赖web浏览器的、被混淆过的代理人攻击(deputy attack)。在上面银行示例中的代理人是Bob的web浏览器,它被混淆后误将Bob的授权直接交给了Alice使用。

下面是CSRF的常见特性:

  • 依靠用户标识危害网站
  • 利用网站对用户标识的信任
  • 欺骗用户的浏览器发送HTTP请求给目标站点
  • 另外可以通过IMG标签会触发一个GET请求,可以利用它来实现CSRF攻击。

风险在于那些通过基于受信任的输入form和对特定行为无需授权的已认证的用户来执行某些行为的web应用。已经通过被保存在用户浏览器中的cookie进行认证的用户将在完全无知的情况下发送HTTP请求到那个信任他的站点,进而进行用户不愿做的行为。

使用图片的CSRF攻击常常出现在网络论坛中,因为那里允许用户发布图片而不能使用JavaScript。

国庆期间,@蟋蟀哥哥 再次对 OSChina 实施了 CSRF,详情如下:

@蟋蟀哥哥 要求与我分享这群鹅,我没有理会,于是他故伎重演,为什么说故伎重演呢,因为这事情以前他干过,而后消停了一段时间。

下面进入纯技术分析阶段:

OSC 上有很多操作都是通过一些固定的链接来调用,举两个最具代表意义的链接:

注销: http://www.oschina.net/action/user/logout
顶贴: http://www.oschina.net/action/question/vote?id=xxxx&vote=up
踩贴: http://www.oschina.net/action/question/vote?id=xxxx&vote=down

只要在浏览器访问 http://www.oschina.net/action/user/logout 这个链接,已登录的用户就会退出登录状态;同理,只要访问下面两个链接就会有相应的顶和踩的动作。

国庆期间 @蟋蟀哥哥 主要是针对下面两个链接搞鬼。

搞鬼的手段如下:

1. 利用自己的网站生成一个跳转页面,跳转到上述几个 OSC 的地址
2. 随便到微博或者其他短网站服务上为自己的页面生成一个短链接(此步可选)
3. 在 OSC 上发动弹或者是其他形式的方法贴出前两步生成的链接
    可以采用一些吸引人的词汇,例如 苍井空高清无码之类的。

就这么挖了一个坑,因为 @蟋蟀哥哥 在 OSC 很活跃,很多人都晓得,于是也就相信了他发的链接,个个往坑里跳。于是乎就出现了:

1. 怎么点了个链接后就退出登录啊
2. 点了个链接就踩了某个贴或者顶了某个贴

这两天,@蟋蟀哥哥 用这种方法让很多人顶了他发的代码(不过他发的代码是挺好的),然后用同样的方法踩了我发的贴。

以上姑且称为漏洞分析,的确是 OSC 存在的不足,有问题不怕,解决的方法如下:

1. 将以上链接改为只允许通过 POST 方法才能访问
2. 给这些操作链接增加校验参数

请大家将鼠标移到页面顶部的“退出”链接上(不要点),浏览器会在底部显示该链接对应的 URL 地址,形如:

http://www.oschina.net/action/user/logout?session=d51b7f2fbd1429059494&goto_page=http%3A%2F%2Fmy.oschina.net%2Fjavayou

其中这个 session 参数就是我们加入的校验参数,它只跟当前访客用户有关,每个人都不同的。当点击此链接时,我们在服务器端的程序会判断取当前登录用户的资料,并比较资料中的 session 值和通过 URL 传递过来的 session 是否一致,如果一致则退出登录,否则不做任何处理。

而 @蟋蟀哥哥 是无法知晓你们的 session 值,因此他已经无法再伪造一个链接让你们点了就退出登录。

这个 session 值是在用户注册的时候随机生成的一个字符串。

这种方法稍微复杂了些,我们还可以将 session 简化为只传递当前登录用户的id,例如将顶贴链接修改为:

http://www.oschina.net/action/question/vote?id=xxxx&vote=up&user=xxxx

在生成此链接时 xxxx 替换为当前登录用户的 id,于是每个人看到的链接地址都是不同的,蟋蟀就只能生成针对某个人才有效的链接。

不管怎么说,蟋蟀这招挺损的,这种问题在多用户的各种社区中存在应该是比较普遍的,而且关键是要修复这个问题需要修改不少代码,而且涉及的地方也比较多。

而且 OSC 还存在不少此类的问题,看来需要做一次地毯式搜索一次性解决。

@蟋蟀哥哥 我祝你这个国庆过得真TMD的好啊!不过鹅呢,我们家决定留着自己吃 

原文地址:http://blog.csdn.net/myfuturein/article/details/8046899

CSRF(Cross-site request forgery 跨站请求伪造)相关推荐

  1. CSRF(Cross-site request forgery)跨站请求伪造

    为什么80%的码农都做不了架构师?>>>    CSRF 背景与介绍 CSRF(Cross Site Request Forgery, 跨站域请求伪造)是一种网络的攻击方式,它在 2 ...

  2. CSRF(Cross-Site Request Forgery) 跨站请求伪造

    一.什么是跨站请求伪造 1. 什么是跨站请求伪造 定义: 跨站点请求伪造(也称为CSRF)是一种Web安全漏洞,允许攻击者诱使用户执行他们不打算执行的操作.它允许攻击者部分绕过同源策略. 危害: 在受 ...

  3. 跨站请求伪造攻击(CSRF)

    CSRF: cross site request forgery(跨站请求伪造) 之前在笔试中做到,就简单做个笔记 CSRF攻击流程 一个典型的CSRF攻击有着如下的流程: 受害者登录a.com,并保 ...

  4. CSRF(跨站请求伪造)攻击 --

    CSRF(跨站请求伪造)攻击 CSRF(Cross Site Request Forgery,跨站请求伪造)是一种近年来才逐渐被大众了解的网络攻击方式,又被称为One-Click Attack或Ses ...

  5. CSRF跨站请求伪造攻击

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

  6. .NET Core实战项目之CMS 第十四章 开发篇-防止跨站请求伪造(XSRF/CSRF)攻击处理...

    通过 ASP.NET Core,开发者可轻松配置和管理其应用的安全性. ASP.NET Core 中包含管理身份验证.授权.数据保护.SSL 强制.应用机密.请求防伪保护及 CORS 管理等等安全方面 ...

  7. 跨站请求伪造(CSRF/XSRF)

    简介 CSRF(Cross-site request forgery跨站请求伪造,也被称为"One Click Attack"或者Session Riding,通常缩写为CSRF或 ...

  8. Web安全相关(二):跨站请求伪造(CSRF/XSRF)

    简介 CSRF(Cross-site request forgery跨站请求伪造,也被称为"One Click Attack"或者Session Riding,通常缩写为CSRF或 ...

  9. CSRF(跨站请求伪造攻击)详解以及防护之道

    CSRF(Cross Site Request Forgery, 跨站域请求伪造)是一种网络的攻击方式,该攻击可以在受害者毫不知情的情况下以受害者名义伪造请求发送给受攻击站点,从而在并未授权的情况下执 ...

最新文章

  1. 微信七年回顾:历经多少质疑和差评,才配拥有今天的强大
  2. Redpine Signals RS9110-N-11-02 Wi-Fi解决方案
  3. 已知gcd和lcm求a+b最小和?------数论
  4. HTML,JS禁止鼠标右键、禁止全选、复制、粘贴的方法
  5. 论文浅尝 | 端到端神经视觉问答之上的显式推理
  6. 用MATLAB玩转机器人--第五章 机器人的数学建模
  7. java 删除list_Java中如何优雅地删除List中的元素
  8. 如何解决亚稳态?(FPGA面试题)
  9. 机器学习模型_如何口述机器学习模型原理
  10. Numpy的使用(1)
  11. 桌面上计算机图标老是自动删除,win7系统总是自动删除桌面快捷方式怎么办
  12. 使用 vimdiff 比较文件的技巧
  13. VS2010使用DX报错 VS报错之混合模式程序集是针对“v1.1.4322”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集。...
  14. python常用图形绘图(matplotlib,pyecharts)
  15. 【测试】黑盒测试(功能性测试)和白盒测试
  16. google colab使用入门
  17. 这36张图包含了高中英语所有生活用词,果断收藏!
  18. 医号馆建设医联体的核心优势(互联网医疗解决方案)
  19. android html5 rtmp,利用H5实现RTMP流的WEB移动端直播
  20. 《毛毛虫团队》第三次作业:团队项目的原型设计

热门文章

  1. python打折简单程序每满_[Python设计模式] 第2章 商场收银软件——策略模式
  2. 新萝卜家园GHOST WIN7系统32,64位官方版下载
  3. 《Knowledge Neurons in Pretrained Transformers》论文解读 ACL2022
  4. 运行项目提示Compilation of JSP File '/xx/xx/xxx.jsp' failed解决办法
  5. Java语言进阶:Channel(通道)
  6. AMBA-AXI(一)burst 传输-INCR/WRAP/Fixed
  7. js Number parseInt()
  8. Kubernetes深入浅出
  9. 天猫店群项目是否合法?天猫为何允许无货源模式的存在?深度剖析
  10. dns服务器架构实验