1

例如我们有这个 URL: https ://www.domain.com/pdf.php?url=http://www.domain.com/report.php?id=341

我想知道是否有可能以某种方式检测使用 PHPreport.php试图pdf.php打开访问report.php?id=341

如果可能的话,我稍后会限制 report.php 只能由 pdf.php、invoice.php 等调用。

基本上我想确保report.php 是由服务器而不是人请求的。

可能存在安全风险吗?

我希望我的问题有意义。提前致谢。

4

3 回答 3

1

你可以看到用户来自哪里使用

$_SERVER['HTTP_REFERER']

例如

if ( $_SERVER['HTTP_REFERER'] == "valid_url.php" ) ...

然而,这并不安全,正如 php 手册所述:这是由用户代理设置的。不是所有的用户代理都会设置这个,有些提供修改 HTTP_REFERER 作为一个特性的能力。简而言之,它不能真正被信任。

于 2013-01-10T19:30:42.440 回答
1

您可以尝试使用以下内容来显示 $_SERVER 数组的全部内容。它将向您显示您正在寻找的所需变量。

print_r($_SERVER);
于 2013-01-10T19:47:59.497 回答
0

最好将你的逻辑添加到pdf.phpinvoice.php等等。在那里你应该处理 GET/POST 参数。如果您使用的是普通 PHP,请创建一些函数并将其放在所有其他 Web 可访问 php 文件的开头。例如

if(!check_get_from($_GET)) die; 

但最佳做法是只有一个入口点 (index.php)。

于 2013-01-10T19:23:42.317 回答