0

这一切都始于我用来启用语言切换的重定向功能。我header('Location: ' . $_SERVER['HTTP_REFERER']);用来将用户重定向回他通过 javascript 重定向的上一个页面window.location.href

我试过了

$_SERVER['HTTP_REFERER']=');';
header('Location: ' . $_SERVER['HTTP_REFERER']);

它重定向到错误页面http://localhost/);

但是我知道可能有一些技巧可以使它泄漏,因此我想问是否有任何注入方法?如果代码不易受到攻击,我不介意让用户修改他们的 http_referer 并发送到错误页面。


更新

我担心的是用户是否可以做类似的事情

$_SERVER['HTTP_REFERER']=')';
$mysqli->query($query);
header('Location: http://localhost ');

如同

$_SERVER['HTTP_REFERER']=");$mysqli->query($query);header('Location: http://localhost ');"; 它在我之前的代码中不可执行,但是谁知道它是否真的易受攻击。

4

1 回答 1

0

是的,$_SERVER['HTTP_REFERER']可以是输入提供的任何内容(例如通过 cURL 调用修改,或通过浏览器插件/插件/扩展等修改)。

因此,您不应像以前那样依赖于$_SERVER['HTTP_REFERER']完成诸如页面流之类的重要任务。

PHP 文档中,它说:

将用户代理引向当前页面的页面地址(如果有)。这是由用户代理设置的。不是所有的用户代理都会设置这个,有些提供修改 HTTP_REFERER 作为一个特性的能力。简而言之,它不能真正被信任。

于 2013-09-16T02:16:50.073 回答