引言:要想深入理解点击劫持攻击,我们需要先清楚iframe的用途及优缺点。
iframe是HTML语言中的一部分,通常用于在网页中嵌入其他网页的内容,如图像、视频、音频、链接等。它允许在一个网页中插入另一个网页,就像在一个网页中插入一个表格一样。
使用iframe有几个优点:
然而,iframe也有一些缺点,由于iframe的嵌套关系,可能会导致浏览器加载速度变慢,甚至影响页面的布局和样式。另外,如果对iframe的内容没有正确的权限控制,可能会泄露敏感信息或导致安全风险(PS:这就引出了本文接下来要讨论的重点)。
点击劫持(Clickjacking)是一种常见的网络安全攻击手段,它是一种基于界面的攻击手段,利用了隐藏的网站通过诱骗用户点击诱饵网站中的其他内容来点击一个隐藏的网站上的可操作内容。
举例:
一个网络用户访问一个诱饵网站(可能是通过电子邮件提供的链接),并点击一个按钮以赢得奖品。不知不觉中,他们被攻击者欺骗,按下了另一个隐藏按钮,结果在另一个网站上执行了账户支付。
Note:这种攻击技术依赖于在iframe中嵌入一个或多个包含按钮或隐藏链接的不可见网页,这些网页在用户预期的诱饵网站内容上方叠加。这种攻击与CSRF攻击不同,因为用户需要执行诸如点击按钮之类的操作,而CSRF攻击则是在用户不知情或未输入的情况下伪造整个请求。
为了防止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是服务端+客户端防护策略。
此外,加强安全意识培训和教育也是非常重要的,以减少人为因素导致的安全漏洞。