如果用户输入一些PHP代码,会发生什么?

时间:2014-05-11 03:56:21

标签: php mysql security code-injection

在将数据库插入数据库之前,可以在php中转义字符串。但是,如果我网站的用户输入了PHP代码,会发生什么?

例如。用户将以下内容提交给表单,该表单将转义字符串并将数据插入到我的数据库中。

Hello! <?php echo 'this is evil'; ?>'

然后这个php行将存储在数据库中。当我显示内容时,它将被转换为:

<div>Hello!<?php echo 'this is evil'?></div>

这不是一个潜在的安全风险吗?因为php代码可能非常恶意?

这是否意味着我必须在每个用户输入上使用strip_tags

3 个答案:

答案 0 :(得分:2)

否它没有风险,因为php不解释代码,实际上你没有使用eval来表示这个值,所以它将显示为纯文本。

现在问题是你应该验证用户的输入。例如,如果这是firstname的输入,则没有人的名字包含&lt;要么 ?。所以你可以使用Regexp来验证值。

或者您应该打印htmlentities的值而不是原始值。

答案 1 :(得分:-1)

PHP代码不会运行,但您必须在将数据库提交到数据库之前验证用户表单数据

替换所有&#34;&lt;&#34;和&#34;&gt;&#34;分别到&lt&gt

$data = str_replace("<","&lt",$data);
$data = str_replace(">","&gt",$data);

如果用户尝试在您的代码中插入一些javascript,这也会有所帮助

答案 2 :(得分:-1)

您必须向用户提交的数据添加反注入功能,例如mysqli_real_escape_string()htmlspecialchars()addslashes()