我有一个允许用户输入文本的输入,然后使用PHP将其发送到另一个页面,并存储在数据库中。我做了一些简单的验证(检查输入是否为空),并且工作得很好。但是,我发现我可以输入HTML标记,例如不允许用户在输入中输入HTML标签
<p>
并且它绕过验证并混淆输入。
如何检查输入是否包含HTML标记,如果是,则返回错误?
我有一个允许用户输入文本的输入,然后使用PHP将其发送到另一个页面,并存储在数据库中。我做了一些简单的验证(检查输入是否为空),并且工作得很好。但是,我发现我可以输入HTML标记,例如不允许用户在输入中输入HTML标签
<p>
并且它绕过验证并混淆输入。
如何检查输入是否包含HTML标记,如果是,则返回错误?
要检查试试这个:
if(preg_match('#^<.>.+</.>$#', $your_value)){
echo "NOT GOOD"; // and some error too
}
你可以这样做:
<input type='text' pattern='[a-zA-Z0-9]+'>
,可以确保只有字母和数字可以去,不会提交如果别的是里面输入。
然而,这仅仅是良好的客户端,并且将只对IE9 +
工作,这也不是用于验证的最好方法,如果有人知道他们在做什么。他们所要做的就是进入源代码来取出pattern
属性,但对于那些不知道的人来说,这样可以。
对于PHP,您可以使用strip_tags()
。 Found here
在插入数据库之前,您可以简单地使用htmlspecialchars或strip_tags。
您还可以使用mysqli_real_escape_string或PDO::quote为安全字符串
怎么样用strip_tags? – user1844933
使用strip_tags http://www.php.net/strip_tags – Hassan