这一切都始于我用来启用语言切换的重定向函数。我使用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修改为 特征。简而言之,它不能真正被信任。