Web安全系列——CSRF攻击

文章首发公众号: 海天二路搬砖工

前言

CSRF 攻击是Web应用中最常见的攻击方式之一。

CSRF攻击给网站身份验证、用户账户和个人隐私带来极大威胁。了解 CSRF 攻击的流程、原理与防御措施,是构建安全可靠的Web应用程序的必要条件。

什么是CSRF攻击

CSRF,全称是Cross-Site Request Forgery,中文名为跨站请求伪造。

CSRF攻击是指指恶意攻击者利用用户已经登录了另一个网站的“身份”来伪造用户的请求(例如提交一个表单)。

CSRF攻击的流程与原理

CSRF攻击的流程与原理如下图所示

Web安全系列——CSRF攻击_第1张图片

  • 首先,受害人访问正常站点aa.com,并生成了登录态(以cookie等方式存储在浏览器中)
  • 接着,受害人访问攻击者刻意构造的看似无害的站点bb.com,bb.com中的恶意页面在加载时会像aa.com发起恶意请求
  • 由于处在同一浏览器中,攻击者可以直接使用aa.com的cookie(登录态)

CSRF 攻击的危害:

CSRF 攻击通常会对 Web 应用程序和用户造成严重威胁和不良影响:

  • **窃取敏感信息:**攻击者可能利用 CSRF 攻击来窃取用户的敏感个人信息,例如身份证号码、收入、税务纪录等。
  • **窃取个人或机构账户:**通过 CSRF 攻击,攻击者可能会利用已经验证过的认证信息,从用户的账户中取走资金、转移资金或在用户知情的情况下进行消费等行为。
  • **篡改记录:**CSRF 攻击也可能会利用用户的身份执行各种不良行为,例如更改记录、删除条目或篡改信息等。从而导致数据损失和信息可用性受损,特别是对某些爱好者、研究员或初创公司来说,其数据是极其重要的。
  • **拒绝服务攻击:**攻击者通过 CSRF 攻击向目标服务器发送大量的恶意请求,使服务器处理过载,从而使其变得不可用,拒绝服务。
  • **破坏用户信任:**当 CSRF 攻击成功时,很可能会导致用户对受攻击之后的 Web 应用程序产生不信任感。这可能会迫使他们停止使用被攻击的网站,这可能会给企业造成巨大的经济损失和声誉影响。

如何防御 CSRF 攻击:

  • **使用POST请求:**使用GET HTTP 方法会更容易受到攻击,因此可以使用 POST 或其他安全的 HTTP 方法。
  • **用户身份验证:**将用户身份验证放在敏感操作之前,这可以增加攻击者窃取用户身份验证 token 的难度。
  • **检查来源站点:**检查 Web 请求是来自已知的和可信的站点。开发者可以检查请求的来源(Referrer)以及请求的主机(Origin 或者 Host),以确保请求是合法的。
  • **使用 CSRF Token:**为表单和其他交互设定随机令牌,称为 CSRF 中的 Token,在请求提交时一并提交 Token,如此服务器可根据Token验证请求的合法性。
  • **防止 third-party cookies:**禁止第三方 cookie 将 cookie 从一个子域传递到另一个子域以防止攻击者获取凭据。
  • **SameSite cookies:**把 cookie 属性设置为SameSite,以防止跨站点 cookie 变成 CSRF 攻击的最佳攻击向量之一。
  • **使用 CSP:**CSP 能够指定页面的某些部分从哪些资源进行加载。这样,即使攻击者成功注入了第三方脚本或 iFrame,浏览器也将拒绝加载并执行脚本。

CSRF 与XSS攻击对比

初学者经常将CSRF攻击和XSS攻击搞混,这里将这两者进行简单对比

CSRF XSS
攻击方式 利用受害者身份凭证进行非法操作 利用网页编码不健壮所造成的网页漏洞
攻击目标 受害者的身份认证 利用受害者自身的浏览器漏洞,实现身份窃取、数据篡改等目的
攻击流程 先让受害者在已经通过身份验证的网站中打开伪造的页面,然后伪造的页面(例如藏在图片中的链接)会发起网络请求进行攻击 在用户的输入中注入恶意脚本,通常是 JavaScript,然后在用户访问包含了这些恶意代码的网站时,这些代码就会在用户的浏览器上执行

总结

CSRF 攻击是互联网世界中的常见安全威胁之一,攻击者通过借用用户身份验证,从而可以执行任意的操作并且不经过用户的认可。为了保护网站与用户的安全,开发人员和用户都应了解 CSRF 攻击并采取一系列预防和防御措施,包括使用合适的随机令牌,设置 SameSite cookies、定期检测、使用防火墙等。

附录

我的公众号

  • Web安全系列——CSRF攻击_第2张图片

你可能感兴趣的:(Web安全,web安全,xss,安全)