它全部以我用于启用语言切换的重定向功能开始。我使用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 ');";
它不能在我以前的代码中执行,但是谁知道它是否真的可以被破坏。
答案 0 :(得分:0)
是的,$_SERVER['HTTP_REFERER']
可以是输入提供的任何内容(例如通过cURL调用修改,或通过浏览器插件/附加组件/扩展程序修改等)。
因此,您不应该依赖$_SERVER['HTTP_REFERER']
像您一样执行页面流程等重要任务。
在PHP documentation中,它说:
将用户代理引用到的页面地址(如果有) 当前页面。这是由用户代理设置的。并非所有用户代理都会 设置这个,有些提供修改HTTP_REFERER的能力 特征。简而言之,它无法真正被信任。