You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何检测嵌入我方网站内容的站点适配X-Frame-Options配置

部署X-Frame-Options前排查第三方站点嵌入的实操方法

以下是经过生产验证的排查方案,覆盖绝大多数嵌入场景,能最大程度避免配置安全头后出现合法嵌入被拦截的问题:

  • 服务端访问日志回溯筛查
    所有现代浏览器发起的iframe嵌入请求,都会自动携带Sec-Fetch-Dest: iframe请求头,你可以直接筛选近3-6个月的服务端访问日志,把带该请求头、且请求来源(Origin/Referer)不属于你方自有域名的记录全部捞出来,统计对应的外站域名、被嵌入的页面路径、访问频次。
    针对不支持Sec-Fetch系列头的老旧浏览器,可以补充筛选Referer为外站域名、且请求资源为非接口类页面的记录,和前面的结果合并去重。注意回溯周期不要短于3个月,否则低频访问的嵌入场景很容易被遗漏。
  • 前端埋点全量采集
    不要直接全量上线安全头,先花1-2周时间做前置采集:在所有站点公共页面插入轻量检测脚本,当识别到页面被非本站域名字面嵌入时,自动上报嵌入方域名。参考代码如下:
if (window.top !== window.self) {
  try {
    const embedOrigin = new URL(document.referrer).origin;
    const selfOrigin = window.location.origin;
    if (embedOrigin && embedOrigin !== selfOrigin) {
      // 替换为站点自有埋点上报接口
      fetch('/api/log/embed-record', {
        method: 'POST',
        headers: {'Content-Type': 'application/json'},
        body: JSON.stringify({
          targetPage: window.location.pathname,
          embedOrigin: embedOrigin,
          accessTime: Date.now()
        }),
        credentials: 'same-origin'
      });
    }
  } catch (err) {
    // 捕获跨域访问异常,不影响页面正常运行
  }
}

这种方式能抓到日志筛选可能漏掉的特殊嵌入场景,采集周期越长,长尾的低流量嵌入场景覆盖越全。

  • 内部合作记录交叉校验
    拉通商务、产品、客户服务侧的对外合作台账,把所有合同、合作协议中明确约定允许嵌入我方站点内容的合作方域名整理出来,和前面日志、埋点采集到的域名清单做比对,补全漏采的合作方场景,尤其是那些仅合作方内部使用、访问量极低的嵌入页面。
  • 上线灰度缓冲
    清单梳理完成后,不建议直接一刀切配置X-Frame-Options: DENY或X-Frame-Options: SAMEORIGIN。如果需要兼容多域名合法嵌入,优先使用灵活性更高的Content-Security-Policy: frame-ancestors 'self' 合法域名1 合法域名2响应头;如果必须兼容老旧浏览器使用X-Frame-Options,可以先按允许清单配置规则,上线后持续观察2周拦截日志,确认没有误拦合法请求后再逐步收紧策略。

提示:不要依赖第三方搜索引擎类工具排查嵌入场景,这类工具的爬虫覆盖范围极有限,绝大多数真实业务场景下的嵌入都无法被抓取到,很容易出现漏判。

内容的提问来源于stack exchange,提问作者Yash Gandhi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 04:45:37