我想知道我在fwrite下面是否有代码注入漏洞?
foreach($_POST as $key=>$val) {
fwrite($fh, "\nPOST variable named " . $key . " has the value " . $val);
}
在将这些值写入日志文件之前,我应该以某种方式清理这些值吗?
更新。 fh是一个日志文件处理程序
答案 0 :(得分:3)
只要日志文件被其消费者视为纯文本(应始终如此),就没有漏洞。
如果你决定输出日志文件的未处理内容作为某些HTML的一部分,那么这将是一个真正的漏洞(可能没有非常严重的实际影响,但仍然)。但问题是使用“其他”代码在HTML中显示文本而不调用htmlspecialchars
,而不是使用此代码只编写日志。
答案 1 :(得分:3)
这取决于$fh
是什么。如果$fh
是HTML文件,则可能会遇到麻烦。如果它是某个文本文件或者外面的任何浏览器都无法访问它,那不是真的。
在HTML输出的情况下使用htmlspecialchars(..)
总是一个好主意。
<强>更新强>:
只要符合以下条件就没有问题:
text/html
标头,并将其视为普通文本文件(如果可以访问)答案 2 :(得分:2)
这可能是反映XSS(跨站点脚本)攻击的来源(如果您要写入提供给用户的HTML文件)。你没有受到攻击的伤害,但是一些天真的用户将是。