【问题标题】:How to find out which website are showing my website using iframe如何找出哪个网站正在使用 iframe 显示我的网站
【发布时间】:2015-07-13 08:53:51
【问题描述】:

假设我们有两个网站:AB

在网站A 上有一个嵌入的iframe,它链接到网站B(网站A 正在为网站B 使用iframe 提供服务)。

网站B 是否知道A 正在为其提供服务,以及如何使用PHP 获取该信息?我想知道A网站的域名和IP地址。

所以我的问题是我事先不知道我的网站将在哪里提供服务,但我只想找出谁在提供服务。

有一种方法可以为 iframe url 提供 URL 获取参数。例如

<iframe src="http://mywebsite.com?url=commingFromWebsiteB"></iframe>

这样我可以使用以下代码检查此 iframe 是否嵌入网站 B:

$sourceWebsite=$_GET['url'];

但问题是网站 B 的管理员可以复制并粘贴此 iframe 到网站 C 并保留此 url 参数等于 'commingFromWebsiteB' 即使 iframe 现在显示在网站上C 不是我的搭档。

谢谢!

【问题讨论】:

  • 您可以使用一些带有 url 的标志变量作为查询字符串。
  • @maurize 问题不一样。在您粘贴的问题中,用户知道 iframe 所在的网站,因此他可以使用 cURl 或任何其他方法检查它,我不知道网站 URL 或 IP 地址。我的问题用 sql 语言说:选择所有使用 iframe 显示我的网站的网站。
  • @b0s3 - 我已经这样做了,但我需要额外的安全措施。
  • 向 URL 添加令牌,即 ?token=someRand0mUn1qu3S7r1ng

标签: php iframe


【解决方案1】:

您可以检查推荐人。通过黑名单或白名单。 如果您知道“小偷”,则此示例用于将其列入黑名单。

<script type="text/javascript">
if(document.referrer.indexOf("otherdomain.com") != -1) {
    window.location = "yourdomain.com/error.html";
}
</script>

另一方面,您也可以在 PHP 中创建一个白名单,然后尝试像这样检查:

$show = false;
if (isset($_SERVER['HTTP_REFERER'])) {
    $array = parse_url($_SERVER['HTTP_REFERER']);
    if (strpos($array['host'], 'yourdomain.com') === false ){
        $show = false;
    } else {
        $show = true;
    }
}

if ($show == false){
    header('HTTP/1.0 403 Forbidden');
    exit('Forbidden');
}

【讨论】:

  • 嗯,也许这是一个很好的解决方案,但我想我会使用其他方法。
  • 我不明白这是如何工作的。 HTTP_REFERER 可以是链接到您网站的网站,不一定使用 IFRAME。
猜你喜欢
  • 2017-04-10
  • 2015-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-19
  • 2019-04-09
  • 2012-10-05
相关资源
最近更新 更多