RWC*_*RWC 4 html iframe execute
可能的重复:
如何将 iframe 从外部站点的显示限制为仅特定域
我想要的很简单。我想防止我的网站被我未批准的域调用。假设只有 a.com 和 b.com 可以有一个带有 iframe 的页面,调用我的 web 应用程序 wwww.mydomain.com/myapp.php。我怎样才能做到这一点?
1st 我在考虑我的网络应用程序检查 iframe 的父域的域。也许这是可能的,但肯定不容易,因为跨域限制。
第二,我想让 a.com 和 b.com 上的请求页面首先执行一个小的 PHP 脚本,该脚本将一些信息写入文件或我的数据库,所以我知道请求页面位于批准的域之一上。问题是如何调用以及何时执行脚本?
放置带有 src 属性的脚本标签或图像标签是个好主意吗?对我来说,这看起来是一个相当简单的解决方案,不需要 PHP。请求页面可以是纯 HTML。
它应该是这样的:
<img src="http://wwww.mydomain.com/myapp.php" style="width: 0px; height: 0px;" alt="Not an image" title="Not an image"/>
Run Code Online (Sandbox Code Playgroud)
你有什么建议?
这就是我所做的,它就像一个魅力。普通用户将无法访问我的 Web 应用程序。
无需对已批准的域进行任何操作。甜的!
感谢 dda 和 jackJoe(如何将 iframe 从外部站点的显示限制为仅特定域)
<?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;
}
Run Code Online (Sandbox Code Playgroud)
?>
| 归档时间: |
|
| 查看次数: |
12848 次 |
| 最近记录: |