我有一个网站:
www.abc.com
一个php文件托管在另一个站点www.xyz.com
上,php文件的链接是:
www.xyz.com/folder/thefile.php
我把一个php函数在thefile.php
。所以要使用这个文件,人们必须来www.abc.com
。这里我把链接设置为:
www.xyz.com/folder/thefile.php?file=123456
www.xyz.com/folder/thefile.php?file=789654 and so on
当任何人点击这些链接时,变量'file'的值在thefile.php
的php函数中被调用,它被执行并显示视频或图像。
现在,例如,对于第一种情况,值是'123456'。如果有人将值'123456'编辑为'1234'或'65431'等,甚至php文件也会显示给他们。此外,如果用户只是访问www.xyz.com/folder/thefile.php
没有变量'file',即使这样,php文件也会显示给他们。
现在我想做的是,如果一个人编辑url或试图只访问www.xyz.com/folder/thefile.php
,那么它应该带他到一些404页面或其他页面。我该怎么做呢?
将没有"file"参数的用户发送到404页面相对容易。
if (!isset($_GET['file'])){
header("Location: 404.php");
}
我看不到任何简单的方法来验证用户没有篡改URL。你可以确保Referrer是你的abc.com网站,但这一点都不安全,因为用户可以修改它。
如果我是你,因为没有更好的解决方案,我会让abc.com保存并发送一个随机散列,其中包含将用户发送到xyz.com的链接。然后,Xyz.com可以轮询abc.com来验证哈希是否有效。ABC可以返回实际的文件ID。使用无效哈希值的用户获得a=重定向。基本上,如果您需要证明链接是有效的,我会寻找一种可以绕过用户的通信媒介。
在你的Root/.htaccess中试试
RewriteEngine on
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^folder/thefile'.php$ - [NC,L,R=404]