什么是点击劫持? 点击劫持缓解措施

555 阅读5分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第17天,点击查看活动详情

点击劫持

什么是点击劫持?

点击劫持是一种攻击,诱使用户点击不可见或伪装成另一个元素的网页元素。这可能导致用户在不知不觉中下载恶意软件,访问恶意网页,提供凭据或敏感信息,转账或在线购买产品。

通常,点击劫持是通过在 iframe 内,在用户看到的页面顶部显示不可见的页面或 HTML 元素来执行的。用户认为他们正在单击可见页面,但实际上他们正在单击其顶部的其他页面中的不可见元素。

不可见的页面可能是恶意页面,也可能是用户不打算访问的合法页面,例如,用户银行网站上授权转账的页面。

点击劫持攻击有几种变体,例如:

  • Likejacking - 一种操纵Facebook“喜欢”按钮的技术,导致用户“喜欢”他们实际上并不打算喜欢的页面。
  • Cursorjacking – 一种 UI 修正技术,它将用户感知到的位置的光标更改为另一个位置。Cursorjacking依赖于Flash和Firefox浏览器中的漏洞,这些漏洞现已得到修复。

点击劫持攻击示例

  1. 攻击者创建了一个有吸引力的页面,该页面承诺为用户提供免费前往塔希提岛的旅行。
  2. 在后台,攻击者检查用户是否登录到其银行网站,如果是,则加载启用资金转移的屏幕,使用查询参数将攻击者的银行详细信息插入表单中。
  3. 银行转帐页面显示在免费礼品页面上方的不可见 iframe 中,“确认转帐”按钮与用户可见的“接收礼品”按钮完全对齐。
  4. 用户访问该页面并单击“预订我的免费旅行”按钮。
  5. 实际上,用户正在单击不可见的iframe,然后单击“确认传输”按钮。资金被转移到攻击者身上。
  6. 用户被重定向到一个页面,其中包含有关免费礼物的信息(不知道在后台发生了什么)。

点击劫持攻击的示例

此示例说明,在点击劫持攻击中,恶意操作(在本例中为银行网站上)无法追溯到攻击者,因为用户在合法登录到自己的帐户时执行了该操作。

点击劫持缓解措施

有两种一般方法可以防止点击劫持:

  • 客户端方法 – 最常见的方法称为帧破坏。客户端方法在某些情况下可能有效,但被认为不是最佳做法,因为它们可以很容易地绕过。
  • 服务器端方法 – 最常见的是 X-Frame-Options。安全专家建议使用服务器端方法作为防御点击劫持的有效方法。

使用 X-Frame-Options 响应标头缓解点击劫持

X-Frame-Options 响应标头作为网页的 HTTP 响应的一部分传递,指示是否应允许浏览器在 或 标记内呈现页面。

X-Frame-Options 标头允许有三个值:

  • DENY – 不允许任何域在框架内显示此页面
  • SAMEORIGIN – 允许当前页面显示在另一个页面上的框架中,但仅在当前域中
  • ALLOW-FROM URI – 允许当前页面显示在框架中,但仅在特定 URI 中显示 – 例如 www.example.com/frame-page

了解 Imperva Web 应用程序防火墙如何帮助您抵御点击劫持攻击。

申请演示了解更多信息

使用 SAMEORIGIN 选项防御点击劫持

X-Frame-Options允许内容发布者防止自己的内容被攻击者在不可见的框架中使用。

DENY 选项是最安全的,可防止在框架中使用当前页面。更常见的是,使用SAMEORIGIN,因为它确实允许使用帧,但将它们限制在当前域中。

X 帧选项的限制

  • 要在网站上启用 SAMEORIGIN 选项,需要将 X-Frame-Options 标头作为每个单独页面的 HTTP 响应的一部分返回(不能跨站点应用)。
  • X-Frame-Options 不支持允许域的白名单,因此它不适用于需要在它们之间显示帧内容的多域站点。
  • 在单个页面上只能使用一个选项,因此,例如,同一页面不可能同时在当前网站和外部网站上显示为框架。
  • 并非所有浏览器都支持 ALLOW-FROM 选项。
  • X-Frame-Options 是大多数浏览器中不推荐使用的选项。

点击劫持测试 - 您的网站是否容易受到攻击?

测试您的网站是否容易受到点击劫持的一种基本方法是创建一个HTML页面,并尝试在iframe中包含您网站上的敏感页面。在另一台 Web 服务器上执行测试代码非常重要,因为这是点击劫持攻击中的典型行为。

使用作为 OWASP 测试指南的一部分提供的类似下面的代码:

<html>
<head>
<title>Clickjack test page</title>
</head>
<body>
<p>Website is vulnerable to clickjacking![</p>
<iframe src="http://www.yoursite.com/sensitive-page" width="500" height="500"></iframe>
</body>
</html>

在浏览器中查看 HTML 页面并评估该页面,如下所示:

  • 如果出现文本“网站容易受到点击劫持”,并且在其下方您可以看到敏感页面的内容,则该页面容易受到点击劫持
  • 如果只出现文字“网站易受点击劫持”,并且您没有看到敏感页面的内容,则该页面不容易受到最简单的点击劫持形式的影响。

但是,需要进行额外的测试,以查看页面上使用了哪些反点击劫持方法,以及攻击者是否可以绕过它们。