[英]Problems with my GET form in PHP
我最近做了一个GET表单,但是问题是它很容易受到攻击,您可以按如下所示插入脚本。
http://mysite.com/processget.phtml?search=<a href="http://google.com">Hacked</a>
我可以在上面的URL中注入任何类型的脚本。实际上我是在BODY中使用回显来回显GET数据,因此每当我输入恶意脚本时,BODY标签中就会执行该脚本。我将这个http://mysite.com/processget.phtml?search=
限制为我想要的数字,字母和一些符号。
例如,用户只能输入
http://mysite.com/processget.phtml?search=A123123+*$
因此,您有谁可以帮助我修复此错误。我是PHP的新手,请解释一下。
if (!empty($_GET['search'])) {
$search = htmlentities($_GET['search'],ENT_QUOTES,'UTF-8');
echo $search;
}
现在很安全。
但是,如果要限制为特定的符号,则需要使用正则表达式。
您可以让用户输入您喜欢的任何内容; 关键是转义输出。 然后,根据需要显示该字符串,而不是将其包含为HTML。
使用类似htmlentities的php函数
去除标签:
echo strip_tags($_GET['search']);
实际上,您可能需要htmlspecialchars ,它转义了标签而不是将其删除,因此它们按预期显示:
echo htmlspecialchars($_GET['search']);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.