一篇文章教你看懂CSRF攻击,so easy!

admin 2024年8月1日23:49:01评论24 views字数 2579阅读8分35秒阅读模式

一篇文章教你看懂CSRF攻击,so easy!

1
CSRF是什么

CSRF攻击,全称为跨站请求伪造(Cross-site request forgery),它可以利用用户已登录的身份,在用户毫不知情的情况下,盗用用户的身份完成非法操作,而屏幕前的你们大概率遇到过此类攻击。

你是否曾经收到过一些看起来很可疑的邮件?它们通常会声称来自银行、电商平台或其它机构,而邮件内容可能包含一些链接和网页文件,如果你不小心点击了这些链接,计算机就会将该网站上你的身份信息发送给服务器,这时你的身份很可能已经被盗用,甚至可能导致经济损失。

一篇文章教你看懂CSRF攻击,so easy!

2
CSRF的攻击原理

用简单模型举例:用户访问恶意网站B,恶意网站B返回给用户的HTTP信息中要求用户访问网站A,而由于用户和网站A之间可能已经有信任关系导致这个请求就像用户真实发送的一样会被执行。

当向网站发出请求时,受害者的浏览器会检查是否有任何与该网站来源相关的Cookie(缓存用户相关信息,包含登录状态等敏感信息),以及是否需要与HTTP请求一起发送Cookie。

如果是这样,这些cookie将包含在发送到此网站的所有请求中。cookie值通常包含身份验证数据,此类cookie表示用户的会话。这样做是为了给用户提供无缝的体验,所以他们不需要对访问的每个页面再次进行身份验证。

如果网站批准会话cookie并认为用户会话仍然有效,则攻击者可以使用CSRF发送请求,就像受害者发送请求一样。该网站无法区分攻击者发送的请求和受害者发送的请求,因为请求总是通过受害者的浏览器使用其自己的cookie发送的。CSRF攻击正是利用浏览器在每次请求时自动向网站发送cookie这一用户友好化的设计。

详细攻击过程如图:

一篇文章教你看懂CSRF攻击,so easy!

举例来说,假如博客网站A的页面具有GET接口,其中blogUserGuid参数显示了关注人的ID:

一篇文章教你看懂CSRF攻击,so easy!

若攻击者在博文内容的html文档中加入img标签(这个标签用以将图片链接向网页,可以存放url,因此被利用来向web应用程序发送请求):

一篇文章教你看懂CSRF攻击,so easy!

那么只要有人打开这篇博文,就会被网站自动关注指定用户。
假如网站仍存在GET接口,但限制了只获取POST请求的数据呢?
攻击者只需要制作一个包含form提交代码(form可以跨域post数据)的第三方页面,曾经打开过博客网站A的用户点击进入这个网页,便会中招。另一种选择是使用XMLHttpRequest技术。
一篇文章教你看懂CSRF攻击,so easy!
一篇文章教你看懂CSRF攻击,so easy!

假如博客园还是有个加关注的接口,已经限制POST,但博文内容是直接贴进HTML(未过滤)呢?

这种情况下,攻击者会使用XSS攻击(恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的),直接把上面代码嵌入博文,那么只要有人打开这篇博文,还是会自动关注博文作者,这组合攻击方式称为XSRF。

3
CSRF的防御手段

随着时间的推移,我们已经发展出了一系列有效的防御手段来对抗 CSRF 攻击。让我们一起回顾一下这些防御策略的演变历程。

1. 验证 Referer:早期的守护者

在网络安全刚刚引起人们关注的时候,一种基本的防御策略诞生了:验证 Referer。服务器会检查HTTP请求头中的 Referer字段,如果请求并非来自受信任的源,那么这个请求就会被拒绝。然而,这个方法并不完全可靠,因为Referer头可以被篡改,或者在某些情况下被浏览器禁用。

2. 使用 CSRF Token:安全的守门人

随着时间的推移,人们开始寻找更可靠的防御手段。于是,CSRF Token应运而生。服务器会为每个会话生成一个随机的、唯一的 token,并将其嵌入到表单中。当表单提交时,服务器会检查这个 token是否存在且有效。这种方式相对安全,但需要服务器存储和管理这些 token。

一篇文章教你看懂CSRF攻击,so easy!

3. 双重Cookie验证:智能的保镖

2000年以来,技术人员开始探索更高效的解决方案。双重 Cookie验证成为了一种新的防御方式。它需要在用户提交请求时同时验证 cookie和请求参数中的 token。这种方式无需服务器存储 token,但需要更复杂的客户端代码来实现。

4. SameSite Cookie属性:革新的战士

近年来,随着主流浏览器开始支持新的特性,我们迎来了一种全新的防御方式:SameSite Cookie属性。通过设置 Cookie的 SameSite属性为Strict 或 Lax,可以防止浏览器在跨站请求时发送Cookie。这种方式简单有效,但需要浏览器的支持。

5. 验证码:最后的防线

虽然验证码并不是专门为防御CSRF设计的,但在某些情况下,它可以作为一种有效的额外防御层。通过要求用户输入看到的验证码,可以确认操作确实是由用户本人发起的。

新事物是指合乎历史前进方向、具有远大前途的东西,旧事物是指丧失历史必然性、日趋灭亡的东西。新事物克服了旧事物中不合理因素,汲取了积极因素,添加了旧事物不能容纳的新内容,具有旧事物不可比拟的优越性。

现在网络世界多以验证码与Cookie验证结合的方式作为CSRF的防御手段,而referer因为其不可靠性现在大多被禁用。相比于referer这样的旧事物,作为新事物的验证码防御不仅同样能达到防御CSRF攻击的目的,而且更有效、更简单。

CSRF的防御手段不断迭代、推陈出新、向更高效,可靠的方向发展,不断淘汰低效复杂的防御方式,体现出新事物必然代替旧事物的历史趋势。

4
小结

网络攻击技术与防御技术彼此依赖,彼此以另一方的存在为前提,体现了矛盾的“同一性”。

网络攻击技术和网络防御技术又相互制约、互相斗争,体现了矛盾的“斗争性”,网络攻击技术与网络防御技术犹如“矛”与“盾”,网络攻击技术的发展往往加快了防御技术成熟的脚步,而防御技术的成熟也往往伴随着攻击技术的更新迭代,引起量变与质变,促进网络攻防技术的综合发展。

网络在发展过程中必然会遇到各种各样的问题,这些问题受时代和技术的限制往往十分棘手,但是我们要坚信哪里有问题,哪里就有解决问题的方法。相信随着网络攻防技术的发展和人们网络安全意识的加强,网络环境会变得更加安全、开放。

内容源自成电本科生人文科普

(如有侵权请联系删除)

一篇文章教你看懂CSRF攻击,so easy!

我为大家整理了一份从入门到进阶的网络安全学习资料包,包含网安书籍、网安导图、网安工具等等,扫描下方二维码,备注【安全合集】免费领取

一篇文章教你看懂CSRF攻击,so easy!

原文始发于微信公众号(马哥网络安全):一篇文章教你看懂CSRF攻击,so easy!

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年8月1日23:49:01
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   一篇文章教你看懂CSRF攻击,so easy!https://cn-sec.com/archives/3023166.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息