首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查iframe是否从批准的域调用?

问检查iframe是否从批准的域调用?
EN

Stack Overflow用户
提问于 2012-05-18 15:39:19
回答 4查看 13.3K关注 0票数 4

可能重复:

How to limit display of iframe from an external site to specific domains only

我想要的很简单。我想阻止我的网站从我没有批准的领域被调用。假设只有a.com和b.com可以使用iframe调用我的Let应用程序ww.mydomain.com/myapp.php。我怎样才能做到这一点?

第一,我在考虑我的web应用程序,检查iframe的父域。也许这是可能的,但肯定不容易,因为跨领域的限制。

第二,我正在考虑让a.com和b.com上的请求页面先执行一个小PHP脚本,它会将一些信息写入文件或我的数据库中,所以我知道请求页面位于一个已批准的域上。问题是如何调用和何时执行脚本?

放置带有src属性的脚本标记或图像标记是一个好主意吗?在我看来,这是一个相当简单的解决方案,不需要PHP。请求页面可以是纯HTML。

如果是这样的话:

代码语言:javascript
复制
<img src="http://wwww.mydomain.com/myapp.php" style="width: 0px; height: 0px;" alt="Not an image"  title="Not an image"/>

你有什么建议?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-05-19 09:02:06

我就是这样做的,就像一种魅力。普通用户将无法访问我的web应用程序。

不需要在批准的域名上做任何事情。甜!

感谢dda和jackJoe ( How to limit display of iframe from an external site to specific domains only )

代码语言:javascript
复制
<?php

  define('MSG_NO_ACCESS', 'No access');

  $acceptedDomains = array('mydomain.com', 'a.com', 'b.com');
  $referer=get_domain($_SERVER['HTTP_REFERER']);

  if(!$referer || !in_array($referer,$acceptedDomains))
  {
     header('HTTP/1.0 403 Forbidden');
     exit(MSG_NO_ACCESS);
  }

function get_domain($url)
{
  $pieces = parse_url($url);
  $domain = isset($pieces['host']) ? $pieces['host'] : '';
  if (preg_match('/(?P<domain>[a-z0-9][a-z0-9\-]{1,63}\.[a-z\.]{2,6})$/i', $domain, $regs)) 
  {
     return $regs['domain'];
  }
  return false;
}

?>

票数 5
EN

Stack Overflow用户

发布于 2012-05-18 16:03:57

这个问题已经问过了。How to limit display of iframe from an external site to specific domains only

基本上可以,取决于您的web服务器,您将需要限制访问。

对于Apache,这可以在.htaccess文件中完成。

使用IIS,这可以在“IP地址和域限制”中完成。

如果您在某个共享托管平台上,您可能没有那么多的控制权。

票数 2
EN

Stack Overflow用户

发布于 2012-05-18 16:22:51

一点点PHP注入一些JS可能会有很长的路要走。

代码语言:javascript
复制
<?php
if(array_key_exists('HTTP_REFERER',$_SERVER)){
  $referer=$_SERVER['HTTP_REFERER'];
} else {
  $referer='';
}
echo "<script type='text/javascript'>
var referer='".$referer."';
</script>
";
?>

这将将HTTP_REFERER注入"referer“JS变量。现在,使用该代码和下面的JS代码,您可以进行如下操作:

代码语言:javascript
复制
if (top === self) {
// not in a frame, no worries
} else {
// in a frame, decide whether referer is one of the guys allowed to display your web site...
// nuke the content, redirect, display a goatsee pic, etc
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10655665

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档