不允许用户在输入中输入HTML标记

时间:2014-02-06 11:10:59

标签: php html

我有一个输入,允许用户输入文本,然后使用PHP将其发送到另一个页面,然后将其存储在数据库中。我做了一些简单的验证(检查输入是否为空),并且运行良好。但是,我发现我可以输入HTML标签,例如

<p>

它绕过了验证并且还混淆了输入。

如何检查输入是否包含HTML标记,如果是,则返回错误?

3 个答案:

答案 0 :(得分:3)

你可以这样做:

<input type='text' pattern='[a-zA-Z0-9]+'>

这确保只有字母和数字可以进入,如果输入中还有其他内容,则不会提交。

但是,这只是好客户端,只适用于IE9 +

如果有人知道他们在做什么,这也不是验证的最佳方法。他们所要做的就是进入源代码来取出pattern属性,但对于那些不知道的人,它会没事的。

对于PHP,您可以使用strip_tags()Found here

答案 1 :(得分:3)

要检查试试这个:

if( preg_match('#^<.>.+</.>$#', $your_value) ){
    echo "NOT GOOD";  // and some error too
}

答案 2 :(得分:2)

您可以在插入数据库之前使用htmlspecialcharsstrip_tags

您还可以使用mysqli_real_escape_stringPDO::quote来保护字符串