标题重定向是否可注入

时间:2013-09-16 02:12:15

标签: php header code-injection

它全部以我用于启用语言切换的重定向功能开始。我使用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 ');"; 它不能在我以前的代码中执行,但是谁知道它是否真的可以被破坏。

1 个答案:

答案 0 :(得分:0)

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

因此,您不应该依赖$_SERVER['HTTP_REFERER']像您一样执行页面流程等重要任务。

PHP documentation中,它说:

  

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