2026-02-06 22:31:59
点击劫持(Clickjacking)
点击劫持是一种视觉欺骗手段,攻击者通过在web端使用iframe嵌套一个透明不可见的页面,让用户在不知情的情况下,点击攻击者想要欺骗用户点击的位置。这种攻击方式利用了用户对当前页面的信任,通过视觉上的误导,使用户在不知情的情况下执行了攻击者想要的操作。
例如,用户访问一个看似提供“免费午餐”的web站点,并点击了一个看似无害的“WIN”按钮,但实际上,这个按钮上方隐藏了一个透明度为0%的iframe,iframe中加载的是登录网上银行后的转账链接。当用户点击“WIN”按钮时,实际上点击的是转账链接,导致资金被转移。
点击劫持的内部机制
防御点击劫持的方法
Frame Bursters:通过在页面上添加脚本来检测并阻止iframe的嵌套,但这种方法并非万无一失,且可能与其他页面功能冲突。
X-Frame-Options Header:这是一种更为有效和广泛使用的防御方法。
X-Frame-Options Header
X-Frame-Options HTTP响应头可以指示浏览器是否应该加载一个iframe中的页面。通过设置X-Frame-Options,网站可以阻止站点内的页面被其他页面嵌入,从而防止点击劫持。
X-Frame-Options的值
配置X-Frame-Options
Apache:在站点配置文件httpd.conf中添加Header always append X-Frame-Options SAMEORIGIN,限制只有站点内的页面才可以嵌入iframe。如果只想针对一个站点进行配置,可以修改.htaccess文件,添加Header append X-FRAME-OPTIONS "SAMEORIGIN"。
Nginx:在nginx/conf文件夹下,修改nginx.conf,添加add_header X-Frame-Options "SAMEORIGIN";,然后重启Nginx服务。
IIS:在web站点的web.config中配置<add name="X-Frame-Options" value="SAMEORIGIN" />,在<httpProtocol><customHeaders>标签内。
浏览器兼容性
X-Frame-Options在大多数现代桌面浏览器中都得到了很好的支持,包括Chrome、Firefox、Safari、Edge等。然而,在某些旧版浏览器或移动浏览器中,支持情况可能有所不同。因此,在部署X-Frame-Options时,建议进行充分的测试,以确保在所有目标浏览器上都能正常工作。
(注:以上图表为示例,实际浏览器兼容性可能因版本和时间而异。)
综上所述,点击劫持是一种严重的web应用安全威胁,但通过合理配置X-Frame-Options Header等防御措施,可以有效降低其风险。同时,建议定期进行安全测试和评估,以确保web应用的安全性。