PHP中GET表单的问题

PHP中GET表单的问题,php,Php,我最近制作了一个GET表单。但问题是它非常容易受到攻击。您可以按如下方式注入脚本 http://mysite.com/processget.phtml?search=<a href="http://google.com">Hacked</a> 你们谁能帮我修复这个bug呢。我对PHP有点陌生,所以请解释一下。去掉标签: echo strip_tags($_GET['search']); 实际上,您可能需要htmlspecialchars,它将转义标记,而不是删除标记,

我最近制作了一个GET表单。但问题是它非常容易受到攻击。您可以按如下方式注入脚本

http://mysite.com/processget.phtml?search=<a href="http://google.com">Hacked</a>
你们谁能帮我修复这个bug呢。我对PHP有点陌生,所以请解释一下。

去掉标签:

echo strip_tags($_GET['search']);
实际上,您可能需要htmlspecialchars,它将转义标记,而不是删除标记,以便按预期显示:

echo htmlspecialchars($_GET['search']);

您可以让用户输入您喜欢的任何内容;关键是退出输出。然后字符串将按需要显示,而不是作为HTML包含

使用php函数,如

现在安全了


但是如果你想限制到特定的符号,那么你需要使用正则表达式。

这样就不会有问题了!您可以通过单击答案旁边的勾号来接受您认为最有帮助的答案。那么,在剥离标记后,如何使页面重定向到另一个页面。例如,在用户输入某个标记后,应该将其带到另一个页面。我的解决方案是“转义”特殊字符(
&
)因此,它们通常显示在页面上,而不是被视为HTML标记。用户可能真的想用这些字符进行合法的搜索。还有一个问题,我确实在我的正文中更改了PHP脚本,但仍然允许标记并执行它。
echo htmlspecialchars($_GET['search']);
if (!empty($_GET['search'])) {
    $search = htmlentities($_GET['search'],ENT_QUOTES,'UTF-8');
    echo $search;
}