5

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

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

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

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

4

3 回答 3

3

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

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

于 2012-07-13T08:37:06.033 回答
3

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

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

更新

只要:

  • 您的日志文件在其他地方(在 public_html 之外,基本上无法通过浏览器访问)
  • 您的网络服务器不会发送text/html标头并将其视为普通文本文件(如果可访问)
于 2012-07-13T08:38:34.820 回答
2

这可能是反射 XSS(跨站点脚本)攻击的来源(如果您正在写入提供给用户的 HTML 文件)。您不会受到攻击的伤害,但一些天真的用户会受到伤害。

于 2012-07-13T08:40:32.873 回答