2014-02-06 265 views
2

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

<p> 

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

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

+3

怎么样用strip_tags? – user1844933

+2

使用strip_tags http://www.php.net/strip_tags – Hassan

回答

2

要检查试试这个:

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

你可以这样做:

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

,可以确保只有字母和数字可以去,不会提交如果别的是里面输入。

然而,这仅仅是良好的客户端,并且将只对IE9 +

工作,这也不是用于验证的最好方法,如果有人知道他们在做什么。他们所要做的就是进入源代码来取出pattern属性,但对于那些不知道的人来说,这样可以。

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

+0

注意这是相对较新的功能,并且在IE9中不支持。另外,不需要使用自闭句法(/>) – Spork

+0

这可以很容易地被客户端绕过! –

+0

我在@unknown中添加了一个php位,现在我将添加警告 – Albzi