标头重定向是否可注入


Is header redirection injectable

这一切都始于我用来启用语言切换的重定向函数。我使用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 ');";它在我以前的代码中不可执行,但是谁知道它是否真的容易受到攻击。

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

因此,您不应该像以前那样依赖$_SERVER['HTTP_REFERER']来执行重要的任务,例如页面流。

在PHP文档中,它说:

将用户代理引荐给 当前页面。这是由用户代理设置的。并非所有用户代理都会 设置此项,有些提供将HTTP_REFERER修改为 特征。简而言之,它不能真正被信任。