Web应用安全之点击劫持(CLICKJACKING)与X-FRAME-OPTIONS HEADER

Web应用安全之点击劫持(CLICKJACKING)与X-FRAME-OPTIONS HEADER
最新回答
悠悠变黑脸婆!

2026-02-06 22:31:59

Web应用安全之点击劫持(Clickjacking)与X-Frame-Options Header

点击劫持(Clickjacking)

点击劫持是一种视觉欺骗手段,攻击者通过在web端使用iframe嵌套一个透明不可见的页面,让用户在不知情的情况下,点击攻击者想要欺骗用户点击的位置。这种攻击方式利用了用户对当前页面的信任,通过视觉上的误导,使用户在不知情的情况下执行了攻击者想要的操作。

例如,用户访问一个看似提供“免费午餐”的web站点,并点击了一个看似无害的“WIN”按钮,但实际上,这个按钮上方隐藏了一个透明度为0%的iframe,iframe中加载的是登录网上银行后的转账链接。当用户点击“WIN”按钮时,实际上点击的是转账链接,导致资金被转移。

点击劫持的内部机制

  • 透明度与位置:攻击者通过设置iframe的透明度和位置,使其在页面上不可见,但覆盖在攻击者想要用户点击的元素上方。
  • 视觉欺骗:通过在页面上添加吸引人的元素(如“WIN”按钮和奖励图片),诱导用户点击。
  • 实际点击事件:当用户点击看似无害的元素时,实际上触发了隐藏在iframe中的元素的事件。

防御点击劫持的方法

  1. Frame Bursters:通过在页面上添加脚本来检测并阻止iframe的嵌套,但这种方法并非万无一失,且可能与其他页面功能冲突。

  2. X-Frame-Options Header:这是一种更为有效和广泛使用的防御方法。

X-Frame-Options Header

X-Frame-Options HTTP响应头可以指示浏览器是否应该加载一个iframe中的页面。通过设置X-Frame-Options,网站可以阻止站点内的页面被其他页面嵌入,从而防止点击劫持。

X-Frame-Options的值

  • DENY:任何页面都不能被嵌入到iframe或者frame中。
  • SAMEORIGIN:页面只能被本站页面嵌入到iframe或者frame中。
  • ALLOW-FROM URI:页面只能被指定的Uri嵌入到iframe或frame中(注意:这个值在某些浏览器中可能不被支持)。

配置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应用的安全性。