Skip to content
目录

我有个网站,我的服务器怎么判断别人是不是通过iframe嵌入的方式来访问我网站的资源

要判断是否通过 iframe 嵌入的方式来访问网站资源,可以通过检查请求头中的 Referer 和 X-Frame-Options 字段来实现。具体方法如下:

1.检查请求头中的 Referer 字段,如果该字段的值为空或者不是同域的,那么就可以判断这个请求是通过 iframe 嵌入的方式来访问的。。。

2.使用 X-Frame-Options 字段来限制页面是否可以被嵌入到 iframe 中。如果 X-Frame-Options 字段的值为 DENY,则表示该页面不允许被任何页面嵌入到 iframe 中;如果 X-Frame-Options 字段的值为 SAMEORIGIN,则表示该页面只能被同域页面嵌入到 iframe 中。

在 Nginx 中,可以通过配置 X-Frame-Options 来限制页面是否可以被嵌入到 iframe 中,具体方法如下:

javascript
add_header X-Frame-Options SAMEORIGIN;

此配置将会在 HTTP 响应头中添加 X-Frame-Options 字段,并设置其值为 SAMEORIGIN,表示该页面只能被同域页面嵌入到 iframe 中。

另外,还可以使用 JavaScript 在页面加载时检查自身是否被嵌入到 iframe 中,具体方法如下:

javascript
if (self !== top) {
  // 页面被嵌入到 iframe 中
} else {
  // 页面未被嵌入到 iframe 中
}

该代码中,self 表示当前页面的 window 对象,top 表示最顶层的 window 对象。如果两者不相等,则说明当前页面被嵌入到 iframe 中。

浏览器如何给<script>标签请求的资源加refer

浏览器默认会为 <script> 标签发起的资源请求加上 Referer 头部信息,该头部信息会包含当前页面的 URL 作为请求来源。但是,如果资源是通过 HTTPS 请求的,则浏览器不会将来源信息发送给服务器,这是浏览器的安全机制。

需要注意的是,如果在页面中使用了 Content Security Policy (CSP) ,那么 CSP 中定义的规则可能会限制或禁止某些请求来源。

找出注入的非window原生属性

js
const iframe = document.createElement("iframe");
  document.body.appendChild(iframe);
  const originWindow = iframe.contentWindow;
  const currentWindow = window;

  const extendAttr = {};

  for (const key of Object.keys(currentWindow)) {
    if (originWindow[key] === undefined) {
      extendAttr[key] = currentWindow[key];
    }
  }

  console.log(
    `origin window: ${Object.keys(originWindow).length}, current window: ${Object.keys(
      currentWindow
    ).length}, extentAttr: ${Object.keys(extendAttr).length}`
  );
  console.log("extendAttr:", extendAttr);
本站总访问量 次 本站访客数 人次

1111111111111111111