如果他更改或删除密钥或var,需要使用php建议将用户重定向到404

时间:2015-09-25 23:52:36

标签: php jquery .htaccess redirect http-status-code-404

我有一个网站:

www.abc.com

php文件托管在另一个站点www.xyz.com中,而php文件的链接是:

www.xyz.com/folder/thefile.php

我在thefile.php中放了一个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,即使这样,也会向他们显示php文件。

现在我要做的是,如果某人编辑了网址或尝试仅访问www.xyz.com/folder/thefile.php,那么应该将他带到404页面或其他网页。 我该怎么做?

2 个答案:

答案 0 :(得分:0)

发送没有"文件"的用户参数到404页面比较容易。

if (!isset($_GET['file'])){
    header("Location: 404.php");
}

我无法通过任何简单的方法来验证用户是否未篡改过该网址。您可以确保推荐人是您的abc.com网站,但由于用户可以对其进行修改,因此这一点并不安全。

如果我在你的位置,由于缺乏更好的解决方案,我会让abc.com保存并发送一个随机哈希,其中包含将用户发送到xyz.com的链接。然后,xyz.com可以轮询abc.com以验证散列是否有效。 ABC可以返回实际的文件ID。具有无效哈希的用户获得a =重定向。基本上,如果您需要证明链接有效,我会寻找可以绕过用户的通信媒介。

答案 1 :(得分:0)

在Root / .htaccess中尝试此操作

RewriteEngine on
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^folder/thefile\.php$ - [NC,L,R=404]