`
zengshaotao
  • 浏览: 753756 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

CSRF攻击原理及防御

 
阅读更多

CSRF攻击原理及防御

 

一、CSRF攻击原理

  CSRF是什么呢?CSRF全名是Cross-site request forgery,是一种对网站的恶意利用,CSRF比XSS更具危险性。想要深入理解CSRF的攻击特性我们有必要了解一下网站session的工作原理。 

  session我想大家都不陌生,无论你用.net或PHP开发过网站的都肯定用过session对象,然而session它是如何工作的呢?如果你不清楚请往下看。 
先问个小问题:如果我把浏览器的cookie禁用了,大家认为session还能正常工作吗? 

  答案是否定的,我在这边举个简单的例子帮助大家理解session。 
比如我买了一张高尔夫俱乐部的会员卡,俱乐部给了我一张带有卡号的会员卡。我能享受哪些权利(比如我是高级会员卡可以打19洞和后付费喝饮料,而初级会员卡只能在练习场挥杆)以及我的个人资料都是保存在高尔夫俱乐部的数据库里的。我每次去高尔夫俱乐部只需要出示这张高级会员卡,俱乐部就知道我是谁了,并且为我服务了。

  这里我们的高级会员卡卡号 = 保存在cookie的sessionid; 
而我的高级会员卡权利和个人信息就是服务端的session对象了。 

  我们知道http请求是无状态的,也就是说每次http请求都是独立的无关之前的操作的,但是每次http请求都会将本域下的所有cookie作为http请求头的一部分发送给服务端,所以服务端就根据请求中的cookie存放的sessionid去session对象中找到该会员资料了。 
当然session的保存方法多种多样,可以保存在文件中,也可以内存里,考虑到分布式的横向扩展我们还是建议把它保存在第三方媒介中,比如redis或者mongodb。 

  我们理解了session的工作机制后,CSRF也就很容易理解了。CSRF攻击就相当于恶意用户A复制了我的高级会员卡,哪天恶意用户A也可以拿着这张假冒的高级会员卡去高尔夫俱乐部打19洞,享受美味的饮料了,而我在月底就会收到高尔夫俱乐部的账单! 

  了解CSRF的机制之后,危害性我相信大家已经不言而喻了,我可以伪造某一个用户的身份给其好友发送垃圾信息,这些垃圾信息的超链接可能带有木马程序或者一些欺骗信息(比如借钱之类的),如果CSRF发送的垃圾信息还带有蠕虫链接的话,那些接收到这些有害信息的好友万一打开私信中的连接就也成为了有害信息的散播着,这样数以万计的用户被窃取了资料种植了木马。整个网站的应用就可能在瞬间奔溃,用户投诉,用户流失,公司声誉一落千丈甚至面临倒闭。曾经在MSN上,一个美国的19岁的小伙子Samy利用css的background漏洞几小时内让100多万用户成功的感染了他的蠕虫,虽然这个蠕虫并没有破坏整个应用,只是在每一个用户的签名后面都增加了一句“Samy 是我的偶像”,但是一旦这些漏洞被恶意用户利用,后果将不堪设想,同样的事情也曾经发生在新浪微博上面。 

  举例: 

  CSRF攻击的主要目的是让用户在不知情的情况下攻击自己已登录的一个系统,类似于钓鱼。如用户当前已经登录了邮箱,或bbs,同时用户又在使用另外一个,已经被你控制的站点,我们姑且叫它钓鱼网站。这个网站上面可能因为某个图片吸引你,你去点击一下,此时可能就会触发一个js的点击事件,构造一个bbs发帖的请求,去往你的bbs发帖,由于当前你的浏览器状态已经是登陆状态,所以session登陆cookie信息都会跟正常的请求一样,纯天然的利用当前的登陆状态,让用户在不知情的情况下,帮你发帖或干其他事情。

 

二、CSRF防御

  • 通过 referer、token 或者 验证码 来检测用户提交。
  • 尽量不要在页面的链接中暴露用户隐私信息。
  • 对于用户修改删除等操作最好都使用post 操作 。
  • 避免全站通用的cookie,严格设置cookie的域。
分享到:
评论

相关推荐

    简解:CSRF的原理及防御

    简解:CSRF的原理及防御

    5分钟科普CSRF攻击与防御,Web安全的第一防线

    目录:一、CSRF介绍二、CSRF攻击的危害三、CSRF攻击原理及过程四、CSRF漏洞检测五、CSRF漏洞预防六、最后聊聊xssCSRF(Cross-siterequestforgery)跨站请求伪造,也被称为“OneClickAttack”或者SessionRiding,通常...

    Python Django框架防御CSRF攻击的方法分析

    主要介绍了Python Django框架防御CSRF攻击的方法,结合实例形式分析了Python Django框架防御CSRF攻击的原理、配置方法与使用技巧,需要的朋友可以参考下

    CSRF攻击的应对之道

    CSRF(Cross SiteRequestForgery,跨站域请求伪造)是一种网络的攻击方式,该攻击可以在受害者毫不知情的...CSRF的基本原理与其危害性,然后就目前常用的几种防御方法进行分析,比较其优劣。最后,本文将以实例展示如

    常见的网络安全攻击和防御方法解析

    包括sql注入、DDos攻击、XSS和CSRF等的攻击原理和防御方法。

    跨站攻击(XSS+CSRF).docx

    跨站请求伪造(英语:Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF, 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。...

    100G网络安全资料2023网络安全零基础到大神全套录播视频教程

    100G网络安全资料2023网络安全零基础到大神全套录播视频教程 网络安全现状及报告 网络安全手册 网络安全基础入门--视频 网络安全等级保护小白自学课 ...CSRF攻击-苏醒的巨人(1.4小... 不安全的文件及下载与上传

    百套毕设之-(开题+正文+演示;无代码)基于PHP的网站信息安全的设计与实现.zip

    详细分析了这些攻击的原理和攻击过程。 同时,本文还设计了针对这些攻击的有效防御措施。此外,本文建立的信息安全网站从网站安全监测、软件系统漏洞监测、安全新闻链接和服务器安全监测等几个功能实现了全面的网站...

    Web安全深度剖析(张柄帅)

    10.1.1 CSRF攻击原理 185 10.1.2 CSRF攻击场景(GET) 186 10.1.3 CSRF攻击场景(POST) 188 10.1.4 浏览器Cookie机制 190 10.1.5 检测CSRF漏洞 193 10.1.6 预防跨站请求伪造 197 10.2 逻辑错误漏洞 199 10.2.1 挖掘...

    网站架构技术

    CSRF攻击 防御方法 表单token 验证码 referer check 1. 网络流量统计 2. 防盗链 error code html注释 文件上传 web应用防火墙 modsecurity NEC的 siteshell 网站安全...

    express-mesto:项目“ Mesto”的正面和背面

    安全增强功能:防御XSS和CSRF攻击 第二部分:带有不同地点照片的卡片 实施的: 检索可用卡 创建和删除卡(只有创建该卡的同一用户才能删除) 放置和删除喜欢(每个人只能放置一个喜欢) 在计划中: 验证传入的...

Global site tag (gtag.js) - Google Analytics