WEB安全之-CSRF(跨站请求伪造)(1)

WEB安全之-CSRF(跨站请求伪造)

======================================================================================

WEB安全中经常谈到的两个东西:XSS和CSRF。

这两个概念在前端面试中也经常被问到,只要涉及到WEB安全的东西就必须提到他们哥俩,从我以往的面试经历中我多次死在这两个东西上,知道这两个东西但让我仔细描述下就瞎几把乱扯,结果可想而知。

这几天也查阅了相关书籍,终于把这两个东西搞明白了,为此决定写篇文章来记录他们俩以备今后复习,这篇先介绍CSRF。

CSRF是什么鬼

CSRF(Cross Site Request Forgery) 跨站请求伪造。也被称为One Click Attack和Session Riding,通常缩写为CSRF或XSRF。如果从名字你还不不知道它表示什么,你可以这样理解:攻击者(黑客,钓鱼网站)盗用了你的身份,以你的名义发送恶意请求,这些请求包括发送邮件、发送消息、盗取账号、购买商品、银行转账,从而使你的个人隐私泄露和财产损失。

CSRF漏洞现状

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

CSRF攻击实例

听了这么多,可能大家还云里雾里,光听概念可能大家对于CSRF还是不够了解,下面我将举一个例子来让大家对CSRF有一个更深层次的理解。

我们先假设支付宝存在CSRF漏洞,我的支付宝账号是lyq,攻击者的支付宝账号是xxx。

然后我们通过网页请求的方式 http://zhifubao.com/withdraw?account=lyq&amount=10000&for=lyq2 可以把我账号lyq的10000元转到我的另外一个账号lyq2上去。通常情况下,该请求发送到支付宝服务器后,服务器会先验证该请求是否来自一个合法的session并且该session的用户已经成功登陆。攻击者在支付吧也有账号xxx,他知道上文中的URL可以进行转账操作,于是他自己可以发送一个请求 http://zhifubao.com/withdraw?account=lyq&amount=10000&for=xxx 到支付宝后台。

但是这个请求是来自攻击者而不是来自我lyq,所以不能通过安全认证,因此该请求作废。这时,攻击者xxx想到了用CSRF的方式,他自己做了个黄色网站,在网站中放了如下代码:http://zhifubao.com/withdraw?account=lyq&amount=10000&for=xxx 并且通过黄色链接诱使我来访问他的网站。

当我禁不住诱惑时就会点了进去,上述请求就会从我自己的浏览器发送到支付宝,而且这个请求会附带我的浏览器中的cookie。大多数情况下,该请求会失败,因为支付宝要求我的认证信息,但是我如果刚访问支付宝不久,还没有关闭支付宝页面,我的浏览器中的cookie存有我的认证信息,这个请求就会得到响应

,从我的账户中转10000元到xxx账户里,而我丝毫不知情,攻击者拿到钱后逍遥法外。所以以后一定要克制住自己,不要随便打开别人的链接。

CSRF原理

下面一张图简单阐述了CSRF的原理

从上图可以看出,要完成一次CSRF攻击,受害者必须依次完成以下两个步骤:

  1. 登录受信任网站A,并在本地生成Cookie。

  2. 在不登出A的情况下,访问危险网站B。

看到这里,你也许会问:“如果我不满足以上两个条件中的一个,我就不会受到CSRF攻击”。是滴,确实如此,但是你不能保证以下情况不会发生:

  • 你不能保证你登录了一个网站之后,不再打开一个tab页面并访问其它的网站(黄网)。

  • 你不能保证你关闭浏览器之后,你本地的Cookie立刻过期,你上次的会话已经结束。

上述中所谓的攻击网站,可能就是一个钓鱼网站或者黄色网站。

几种常见的攻击类型


GET类型的CSRF

这种类型的CSRF一般是由于程序员安全意识不强造成的。GET类型的CSRF利用非常简单,只需要一个HTTP请求,所以,一般会这样利用:

<img src=http://wooyun.org/csrf?xx=11 />

在访问含有这个img的页面后,成功向http://wooyun.org/csrf?xx=11 发出了一次HTTP请求。

所以,如果将该网址替换为存在GET型CSRF的地址,就能完成攻击了。

POST类型的CSRF

这种类型的CSRF危害没有GET型的大,利用起来通常使用的是一个自动提交的表单,如:

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)

结尾

学习html5、css、javascript这些基础知识,学习的渠道很多,就不多说了,例如,一些其他的优秀博客。但是本人觉得看书也很必要,可以节省很多时间,常见的javascript的书,例如:javascript的高级程序设计,是每位前端工程师必不可少的一本书,边看边用,了解js的一些基本知识,基本上很全面了,如果有时间可以读一些,js性能相关的书籍,以及设计者模式,在实践中都会用的到。

资料领取方式:戳这里免费获取

avascript的高级程序设计,是每位前端工程师必不可少的一本书,边看边用,了解js的一些基本知识,基本上很全面了,如果有时间可以读一些,js性能相关的书籍,以及设计者模式,在实践中都会用的到。

资料领取方式:戳这里免费获取

html5

  • 29
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CSRF(Cross-Site Request Forgery,请求伪造)是一种常见的Web应用程序安全漏洞,攻击者利用此漏洞在未经授权的情况下对用户进行身份验证和提交表单等操作。 以下是防御CSRF攻击的一些常见措施: 1. 随机化Token:应用程序可以在表单中嵌入一个随机的令牌(Token),这个Token的值是动态生成的,每次请求时都会不同,这样攻击者就无法通过构造一个伪造的表单来通过验证。 2. 检查Referer:在服务器端进行验证,检查HTTP请求的Referer头部信息,以确保请求是来自正确的来源。但是,这种方法也有其限制,因为一些浏览器和代理服务器不会发送Referer头部信息。 3. Cookie设置:限制cookie的访问,以确保cookie不能在不同的域名或子域名下被访问。例如,可以使用HttpOnly标志禁止JavaScript访问cookie,或使用SameSite标志限制cookie只能由同一请求使用。 4. 双重确认:对于关键操作(例如修改密码或删除帐户),可以要求用户在执行操作前进行额外的确认,例如输入密码或提供双重身份验证(如OTP)。 5. 输入验证:应用程序应该对输入进行验证和过滤,以防止攻击者利用恶意数据进行攻击。例如,应该限制输入长度、验证输入格式,过滤特殊字符等。 这些措施并不是绝对的,但是它们可以帮助减少CSRF攻击的风险。在开发应用程序时,还应该遵循其他安全最佳实践,如避免使用不安全的库、保持应用程序的软件和系统更新、监视应用程序日志等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值