vlambda博客
学习文章列表

逆天了,你知道什么是CSRF 攻击吗?如何防范?

什么是 CSRF 攻击?

跨站点请求伪造 (CSRF) 攻击允许攻击者伪造请求并将其作为登录用户提交到 Web 应用程序,CSRF 利用 HTML 元素通过请求发送环境凭据(如 cookie)这一事实,甚至是跨域的。

与 XSS 一样,要发起 CSRF 攻击,攻击者必须说服受害者单击或导航到链接。与 XSS 不同的是,CSRF 只允许攻击者向受害者的来源发出请求,并且不会让攻击者在该来源内执行代码。这并不意味着 CSRF 攻击的防御变得不那么重要。正如我们将在示例中看到的,CSRF 可能与 XSS 一样危险。

逆天了,你知道什么是CSRF 攻击吗?如何防范?

CSRF的背景

Web 起源于查看静态文档的平台,很早就添加了交互性,在POSTHTTP 中添加了动词,<form> 在 HTML 中添加了元素。以 cookie 的形式添加了对存储状态的支持。

CSRF 攻击利用 Web 的以下属性:cookie 用于存储凭据,HTML 元素(与 JavaScript 不同)被允许发出跨域请求,HTML 元素随所有请求发送所有 cookie(以及凭据)。

CSRF 将所有这些放在一起。攻击者创建了一个恶意网站,其中包含向受害者的来源提交请求的 HTML 元素。当受害者导航到攻击者的站点时,浏览器会将受害者来源的所有 cookie 附加到请求中,这使得攻击者生成的请求看起来像是由受害者提交的。

逆天了,你知道什么是CSRF 攻击吗?如何防范?

它是如何工作的?

  • 它仅在潜在受害者经过身份验证时才有效。
  • 攻击者可以通过使用 CSRF 攻击绕过身份验证过程进入网站。
  • CSRF 攻击在具有额外权限的受害者执行某些操作而其他人无法访问或执行这些操作的情况下使用。例如,网上银行。

CSRF 攻击分两个主要部分执行

第一步是吸引用户/受害者点击链接或加载恶意页面。攻击者使用社会工程学来欺骗受害者。

第二步是通过向受害者的浏览器发送伪造的请求来欺骗受害者。此链接会将看似合法的请求重定向到网站。攻击者将拥有他必须寻找的受害者的价值观或详细信息;受害者会认为该请求是合法的。攻击者还将获得与受害者浏览器相关联的 cookie 的详细信息。

CSRF 的关键概念

  • 攻击者向用户访问的站点发送恶意请求,攻击者认为受害者已针对该特定站点进行了验证。
  • 受害者的浏览器针对目标站点进行身份验证,并用于路由目标站点的恶意请求。
  • 在这里,受害者的浏览器或实施了 CSRF 预防方法的站点不会受到攻击;受影响的网站是主要漏洞。

如何防止跨站请求伪造(CSRF)?

有几种 CSRF 预防方法;其中一些是:

  • 在不使用 Web 应用程序时注销它们。
  • 保护您的用户名和密码。
  • 不要让浏览器记住密码。
  • 在您处理应用程序并登录时,请避免浏览。

反 CSRF Token

阻止跨站点请求伪造 (CSRF) 的最常见实现是使用与选定用户相关的令牌,并且可以在每个状态下作为隐藏表单找到,动态表单出现在在线应用程序上。

1. 这个Token,简称 CSRF Token

工作原理如下:

  • 客户端请求具有表单的HTML 页面。
  • 为了响应这个请求,服务器附加了两个令牌。它将一个作为 cookie 发送,并将其他令牌保存在隐藏的表单字段中。这些令牌是随机生成的。
  • 提交表单后,客户端将两个令牌都发送回服务器。cookie 令牌作为令牌发送,表单令牌在表单数据内部发送。
  • 如果一个请求没有两个请求,则服务器不会响应或拒绝该请求。

试图伪造请求的攻击者将不得不猜测反 CSRF 令牌和用户的身份验证密码。一段时间后,一旦会话结束,这些令牌就会失效,这使得攻击者难以猜测令牌。

2. 同站点 Cookie

有一些 cookie 与来源或网站相关联,当请求发送到该特定来源时,cookie 会随之发送。此类请求称为跨域请求。在此过程中,cookie 被发送给第三方,这使得 CSRF 攻击成为可能。

3. 相同的站点 Cookie 属性

  • 为了防止 CSRF 攻击,可以使用同站点 cookie 属性。它禁用第三方对特定 cookie 的使用。
  • 由服务器在设置cookie时完成;只有当用户直接使用 Web 应用程序时,它才会请求浏览器发送 cookie 。
  • 如果有人试图从 Web 应用程序请求某些东西,浏览器将不会发送 cookie。
  • 但是,它可以防止 CSRF 攻击。

这有一个限制,现代浏览器不支持同站点 cookie,而旧浏览器不支持使用同站点 cookie 的 Web 应用程序。

CSRF 示例

<class=”word”>下面<class=”word”>我们有<class=”word”>解释<class=”word”>一些<class=”word”>例子<class=”word”>CSRF :

1. 使用 GET 请求:

假设您已经实现并设计了一个网站banking.com,以使用GET 请求执行诸如在线交易之类的操作,现在,知道如何制作恶意 URL 的聪明攻击者可能会使用 <img> 元素让浏览器静默加载页面。

包含恶意 URL的HTML 图像元素示例:

<img src="http://banking.com/app/transferFunds?amount=2500&destination=56789">

2. 可以使用以下技术之一来做同样的事情:

  • 通过发送包含 HTML 内容的电子邮件
  • 通过在页面上植入脚本或恶意 URL。

3. 使用 POST 请求

关于 HTTP POST 请求有一个普遍的误解,认为 CSRF 攻击可以通过允许 HTTP POST 请求来防止,这实际上是不正确的。攻击者可以使用HTML 或 JavaScript创建表单并使用自动提交功能来提交 POST 请求,而无需用户单击提交按钮。

结论

Cookie 很容易受到攻击,因为它们是随请求自动发送的,允许攻击者实施 CSRF 并发送恶意请求,CSRF 漏洞的影响还取决于受害者的权限,其 Cookie 与攻击者的请求一起发送。

虽然数据检索不是 CSRF 攻击的主要范围,但状态变化肯定会对被利用的 Web 应用程序产生不利影响。因此,建议防止您的网站使用预防方法来保护您的网站免受 CSRF 的影响。

来源:网络技术联盟站 

链接:https://www.wljslmz.cn/1098.html