我最近做了一个GET表单。但问题是它非常容易受到攻击。你可以按如下方式注入脚本。
http://mysite.com/processget.phtml?search=<a href="http://google.com">Hacked</a>
我能够将任何类型的脚本注入上面的URL。我实际上是在我的BODY中使用echo回显我的GET数据,因此每当我输入恶意脚本时,它都会在我的BODY标签中执行。所以现在我如何将这个http://mysite.com/processget.phtml?search=
限制为我想要的数字,字母和几个符号。
对于ex。用户应该只能输入
http://mysite.com/processget.phtml?search=A123123+*$
所以你可以帮助我修复这个bug。我是PHP的新手,所以请解释一下。
答案 0 :(得分:2)
if (!empty($_GET['search'])) {
$search = htmlentities($_GET['search'],ENT_QUOTES,'UTF-8');
echo $search;
}
现在安全了。
但是如果你想限制特定的符号,那么你需要使用正则表达式。
答案 1 :(得分:1)
您可以让用户输入您喜欢的任何内容;关键是逃避输出。然后根据需要显示字符串,而不是作为HTML包含。
使用像htmlentities
这样的php函数答案 2 :(得分:0)
剥离标签:
echo strip_tags($_GET['search']);
实际上,您可能需要 htmlspecialchars ,它会转义标记而不是删除它们,以便它们按预期显示:
echo htmlspecialchars($_GET['search']);