Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何限制对PHP文件的访问,使其只能通过服务器中的iframe访问?_Php_Iframe_Access Control - Fatal编程技术网

如何限制对PHP文件的访问,使其只能通过服务器中的iframe访问?

如何限制对PHP文件的访问,使其只能通过服务器中的iframe访问?,php,iframe,access-control,Php,Iframe,Access Control,我的服务器上有一个content.php文件,需要将它加载到另一个页面mask.php的iframe中。这很好,但我不希望content.php可以在mydomain.com/content.php上访问,只能通过iframe在mydomain.com/mask.php上访问 有没有办法将对content.php的访问限制为仅通过同一服务器上的iframe?PHP还是HTTP 我读过关于限制content.php的引用,因此它必须是mask.php才能加载,但无法正常工作。我可以想象,它应该可以

我的服务器上有一个content.php文件,需要将它加载到另一个页面mask.php的iframe中。这很好,但我不希望content.php可以在mydomain.com/content.php上访问,只能通过iframe在mydomain.com/mask.php上访问

有没有办法将对content.php的访问限制为仅通过同一服务器上的iframe?PHP还是HTTP

我读过关于限制content.php的引用,因此它必须是mask.php才能加载,但无法正常工作。我可以想象,它应该可以通过PHP实现。

mask.PHP

<?php
if($_SERVER['REQUEST_URI']==='/mask.php' && $_SERVER['SCRIPT_NAME']==='/mask.php')
{
include("content.php");
}
?>

content.php

<?php

if($_SERVER['REQUEST_URI']==='/content.php' && $_SERVER['SCRIPT_NAME']==='/content.php')
{
die('No Access');
}
elseif($_SERVER['REQUEST_URI']==='/mask.php' && $_SERVER['SCRIPT_NAME']==='/mask.php')

{

echo 'hello';

}

?>


您可以使用referer,但它并不总是有效的,而且很容易被欺骗。因此,服务器严格地说不知道是否从iframe中加载了页面,并且不能100%地解决这个问题。顺便说一句,“PHP或HTTP”没有意义。第一种是编程语言,第二种是通信协议。这不是一个或另一个,但可能两者都有。最后,“似乎不起作用”没有告诉我们任何事情。这个问题缺少你的代码和更详细的描述,因此我投票决定结束。你的提问不可能以可靠或“安全”的方式进行,因为这与发布内容背后的想法背道而驰。对已发布资源的请求要么被接受并答复,要么被拒绝并阻止。为什么它应该与请求是如何发送的、从哪个元素发送的有关?也许可以在浏览器端用javascript完成。首先在mask.php文件中设置一个变量,然后在content.php中检查变量是否匹配。这样,如果content.php与mask.php不在同一个选项卡中加载,则不会设置变量,因此不会匹配,然后→ 请勿加载。但是,如果content.php与mask.php加载在同一个选项卡中,那么变量将被设置并匹配,因此→ 负载这可能吗?我不是专家,可能浏览器会将iframe作为单独的文档读取,因此不会有变量匹配……这不起作用
REQUEST\u URI
SCRIPT\u NAME
始终反映被请求资源的URI,而不是触发请求的顶级帧的URI。