引言:要想深入理解点击劫持攻击,我们需要先清楚iframe的用途及优缺点。
1. 关于iframe
iframe是HTML语言中的一部分,通常用于在网页中嵌入其他网页的内容,如图像、视频、音频、链接等。它允许在一个网页中插入另一个网页,就像在一个网页中插入一个表格一样。
使用iframe有几个优点:
- 内容重用:iframe嵌入的内容通常已经预先加载,这样可以减少加载时间,提高页面加载速度。
- 内容管理:嵌入的内容通常由其所有者或管理员进行维护和更新,这对于一个包含多个独立内容的网站来说非常重要。
- SEO友好:通过iframe嵌入的内容可以通过外部链接直接访问,有助于搜索引擎优化(SEO)。
然而,iframe也有一些缺点,由于iframe的嵌套关系,可能会导致浏览器加载速度变慢,甚至影响页面的布局和样式。另外,如果对iframe的内容没有正确的权限控制,可能会泄露敏感信息或导致安全风险(PS:这就引出了本文接下来要讨论的重点)。
2. Clickjacking的定义
点击劫持(Clickjacking)是一种常见的网络安全攻击手段,它是一种基于界面的攻击手段,利用了隐藏的网站通过诱骗用户点击诱饵网站中的其他内容来点击一个隐藏的网站上的可操作内容。
举例:
一个网络用户访问一个诱饵网站(可能是通过电子邮件提供的链接),并点击一个按钮以赢得奖品。不知不觉中,他们被攻击者欺骗,按下了另一个隐藏按钮,结果在另一个网站上执行了账户支付。
Note:这种攻击技术依赖于在iframe中嵌入一个或多个包含按钮或隐藏链接的不可见网页,这些网页在用户预期的诱饵网站内容上方叠加。这种攻击与CSRF攻击不同,因为用户需要执行诸如点击按钮之类的操作,而CSRF攻击则是在用户不知情或未输入的情况下伪造整个请求。
3. 常见点击劫持手段
- 界面欺骗:攻击者通常会使用一些HTML和CSS技术,如使用透明度、动画效果、边框阴影等视觉欺骗手段,使得用户界面看起来像一个合法的应用程序或网站。
- 跨站脚本(XSS)攻击:攻击者可能会利用跨站脚本攻击,获取用户的用户名、密码或其他敏感信息。在某些情况下,攻击者可能会在受害者的浏览器上注入恶意代码,并利用浏览器的漏洞来控制用户的界面。
- 客户端交互设计:攻击者通过精心设计的交互设计,使得用户点击错误的按钮或链接,导致执行恶意操作。例如,攻击者可能会在用户界面中设置一个假的提交按钮,诱使用户点击它并提交敏感信息。
4. 如何缓解点击劫持攻击
为了防止Clickjacking攻击,可以采用以下几种方法:
-
1. 使用X-Frame-Options头部:这是一种HTTP标头,用于告诉浏览器哪些网站可以包含这个页面。对于一个公共网站,通常使用“DENY”或“SAMEORIGIN”来防止其他网站将该页面嵌入其中。
-
2. 使用CSP头部: CSP(Content Security Policy)是一种强大的HTTP标头,可以配置一个网页内的内容。它可以用于禁止嵌入页面中的某些iframe或all iframe(所有的iframe都不被允许)。如果使用恰当,可显著降低Clickjacking的风险。关于CSP的详细介绍可以参阅博主文章《「 网络安全术语解读 」内容安全策略CSP详解》
-
3. 增强用户界面的可见性:通过将按钮或链接置于iframe之外,使它们更易于看到,可以减少用户被欺骗点击的可能性。
-
4、提示用户确认操作:在执行敏感操作之前,可以向用户显示一个确认框,要求他们确认操作。这可以增加用户的警觉性。
-
5. 启用跨站请求伪造保护:大多数现代浏览器都内置了跨站请求伪造(CSRF)的保护机制。如果启用了这个机制,用户就不太可能受到Clickjacking攻击的影响,因为攻击者需要用户执行一些操作时必须使用用户已经登录并授权的网站。
Note:1、2是服务端的承防护策略,3、4是客户端的防护策略,5是服务端+客户端防护策略。
此外,加强安全意识培训和教育也是非常重要的,以减少人为因素导致的安全漏洞。
5. 参考
[1] https://portswigger.net/web-security/clickjacking