回显$ _POST变量的代码注入漏洞?

时间:2012-07-13 08:35:35

标签: php code-injection

我想知道我在fwrite下面是否有代码注入漏洞?

foreach($_POST as $key=>$val) {
    fwrite($fh, "\nPOST variable named " . $key . " has the value " . $val);
}

在将这些值写入日志文件之前,我应该以某种方式清理这些值吗?

更新。 fh是一个日志文件处理程序

3 个答案:

答案 0 :(得分:3)

只要日志文件被其消费者视为纯文本(应始终如此),就没有漏洞。

如果你决定输出日志文件的未处理内容作为某些HTML的一部分,那么这将是一个真正的漏洞(可能没有非常严重的实际影响,但仍然)。但问题是使用“其他”代码在HTML中显示文本而不调用htmlspecialchars,而不是使用此代码只编写日志。

答案 1 :(得分:3)

这取决于$fh是什么。如果$fh是HTML文件,则可能会遇到麻烦。如果它是某个文本文件或者外面的任何浏览器都无法访问它,那不是真的。

在HTML输出的情况下使用htmlspecialchars(..)总是一个好主意。

<强>更新

只要符合以下条件就没有问题:

  • 您的日志文件位于其他位置(在public_html之外,基本上无法通过浏览器访问)
  • 您的网络服务器不会发送text/html标头,并将其视为普通文本文件(如果可以访问)

答案 2 :(得分:2)

这可能是反映XSS(跨站点脚本)攻击的来源(如果您要写入提供给用户的HTML文件)。你没有受到攻击的伤害,但是一些天真的用户将是。