暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

一文读懂点击劫持攻击--安全基础系列

架构经纬 2024-10-23
91

【每天5分钟,了解一个知识点】

今天咱们来聊聊一种网络安全隐患——点击劫持攻击。

一、什么是点击劫持攻击?

想象一下,你正在网上愉快地浏览着某个网站,突然出现一个看似是这个网站的按钮或者链接,但实际上这是攻击者精心设置的陷阱。攻击者利用一种叫做透明或半透明 iframe 的技术,把目标网站嵌套在自己的网页当中。就好像在你的面前放了一块有部分透明的玻璃,玻璃后面是你本来要访问的网站,而玻璃上有一个假的按钮,让你误以为是原网站的操作按钮。一旦你点击了这个假按钮,就会触发原网站的一些操作,这时候攻击者就有可能盗取你的信息或者执行一些恶意的行为。

二、如何防止点击劫持攻击?

  1. 设置 X-Frame-Options 头

    • DENY:表示禁止所有的嵌套,就像在你的网站周围筑起了一堵高高的墙,谁也别想把你的网站嵌套进去。

    • SAMEORIGIN:只允许同域名的嵌套,也就是说只有和你的网站来自同一个“家族”的才能嵌套进来。

    • ALLOW-FROM uri:允许某个特定的网址嵌套,就像是给特定的“朋友”发放了通行证。

    • 这就像是给你的网站设置了一个“防护盾”。通过设置 HTTP 响应头 X-Frame-Options,可以告诉浏览器是否允许在 iframe 中嵌套网页。这个头有三个可选值:

    • 不过要注意哦,不是所有的浏览器都支持这个方法,所以我们还需要其他的办法来进行兼容。

  2. JavaScript 防御

    • 我们可以利用 JavaScript 来当一个“侦探”。通过检查 window.top 和 window.self 的地址,如果这两个地址不一致,那就说明当前网页被嵌套了。这时候我们可以把网页重定向到其他安全的地址,让攻击者的阴谋无法得逞。

  3. CSP 头

    • Content-Security-Policy(CSP)头就像是一个严格的“保安”,能够限制网页内容是如何加载的,从而防止点击劫持攻击。具体来说,可以通过为 CSP 头添加 frame-ancestors 指令,来规定在哪些网址中允许自己的网页被嵌套。

  4. 尽量避免使用 iframe

    • iframe 就像是一个容易被攻击的“漏洞”,所以我们尽量不要使用它。如果实在必须要用,那我们可以对 iframe 的样式进行调整,比如设置背景颜色、透明度等,让 iframe 不那么透明,这样用户就能更容易地识别出这不是原网站的内容,从而减小被攻击的风险。

【关联阅读】

关注公众号,回复【Java面试】,获取更多面试资料

文章转载自架构经纬,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论