Day17【Web】网路攻击:点击劫持 Clickjacking

点击劫持

点击劫持(Clickjacking) 技术又称为
界面伪装攻击(UI redress attack)
是一种将恶意程序隐藏在看似正常的网页中,
并诱使使用者在不知情情况下点击的手段。

攻击原理

使用者被诱使点击种下恶意程序的连结时,
该连结上其实覆盖了一个隐藏的 <iframe>
点击该连结时,实际上是点选了隐藏的 <iframe>
如果 <iframe> 内容是个 facebook 的「赞」按钮,
用户点到连结时,实际上是操作的是 facebook 的介面。
如 Twitter、Facebook 和 Paypal 等网站上,
都曾经发生过此种攻击。

因键盘操作要重新定向较复杂,此类攻击基本上仅影响点击(滑鼠或手机上的)行为。


防御方式

X-Frame-Options

在 HTTP Header 加入 X-Frame-Options 属性,
允许或禁止网页载入 <frame><iframe>

副作用是其他正常的网站
也无法在 frame 中显示被禁用 frame 的网页。

X-Frame-Options 有三种类型:

  • DENY:始终禁止在 frame 中显示此页面。
  • SAMEORIGIN:允许在和父网页同源的 frame 中显示此页面。
  • ALLOW-FROM domain:允许在特定父网页的 frame 中显示此页面。

Samesite cookie

samesite cookie 的特性
也可以阻止点击劫持攻击。

具有 samesite 特性的 cookie
仅能在网页通过直接方式打开时发送,
而不能透过 frame 或其他方式下发送给网站。

如下当网站在其身分验证 cookie 中
具有 samesite 特性时

Set-Cookie: authorization=secret; samesite

那当它在另一个网站中的 iframe 被打开时,
此类 cookie 将不会被发送,攻击也就无法成功。

这种方法可以让其他网站
轻松地在 iframe 中显示原本就公开、
无需进行身分认证的页面。

但 Samesite cookie 仅能防止使用 cookie 的攻击,
如果像是通过检查 IP 地址来防止重复投票的网站,
仍然会受到点击劫持攻击,
因为它并不使用 cookie 来进行身分认证。


参考资料:


<<:  [Day 28] 实作 Multi-Channel Notifications

>>:  Day 0x17 - 建立订单(赞助)的画面

Day14. Module & #extend #prepend #include - Ruby 继承 part1

Day14-15 一共会介绍 Ruby的2类、4种继承方式。 在Day2 我们提到 Ruby 为单一...

演讲该让人打包带走的东西

今天听着讲座,刚好很幸运的解决了两问题。 第一个是三节的内容,呈现了讲稿式的,经验式的,互动式三种模...

Progressive Web App 推播通知: 网站推播通知原理开箱解密 (22)

什麽是网站推播通知 推播通知不管对 App 或是网站来说都是一种重新吸引用户来使用 App 的方法,...

【Vue】串 API 前置作业|Axios 是什麽?

Axios 是一个 Promise based 的HTTP 请求工具。 那 Promise base...

Day 24 ATT&CK for ICS - Lateral Movement(2)

T0843 Program Download 攻击者可能透过程序下载已将使用者的程序码传输到控制器中...