需要建议与php重定向用户到404,如果他改变或删除键或var


Need advice with php to redirect user to 404 if he changes or removes the key or var

我有一个网站:

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]