【问题标题】:Is header redirection injectable标头重定向是否可注入
【发布时间】:2013-09-16 02:12:14
【问题描述】:

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

【问题讨论】:

  • 呃,是的,任何人都可以向您发送他们想要的任何推荐人。这是一个完全由用户提供的字段。
  • 妈妈,是你吗?天哪,我们讨论过这个....不要使用 Referrer 标头。
  • 如果您指的是 SQL 注入,这种情况并不是很相似。通过 SQL 注入,恶意用户可以在他们的数据库上执行他们选择的代码。在这种情况下......用户可以控制他们被重定向到哪个页面,这并不是真正的安全问题。
  • 我知道要避免引用标头但是我的问题是header('Location: ' . $_SERVER['HTTP_REFERER']); 容易被注入?我试图避免使用 http_referer 但是我不知道如何使用 javascript(这是一个客户端)安全地将用户重定向回他们的当前页面
  • 不,那不可能。

标签: php header code-injection


【解决方案1】:

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

因此,您不应该像以前那样依赖$_SERVER['HTTP_REFERER'] 来完成页面流等重要任务。

在PHP documentation,它说:

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

【讨论】:

  • 你可以看到我知道可以修改。要将用户重定向到上一页,我认为它应该使用类似于 http_referer 的东西,因此仍然可以编辑,那么为什么不显示一些更好的替换?
  • 您可以设置有效值列表,更重要的是设置默认值。列表之外的所有其他值应回退到默认值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-06-20
  • 1970-01-01
  • 2014-05-16
  • 1970-01-01
  • 1970-01-01
  • 2023-03-21
  • 2011-05-16
相关资源
最近更新 更多