我有一个输入,允许用户输入文本,然后使用PHP将其发送到另一个页面,然后将其存储在数据库中。我做了一些简单的验证(检查输入是否为空),并且运行良好。但是,我发现我可以输入HTML标签,例如
<p>
它绕过了验证并且还混淆了输入。
如何检查输入是否包含HTML标记,如果是,则返回错误?
答案 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)
您可以在插入数据库之前使用htmlspecialchars或strip_tags。
您还可以使用mysqli_real_escape_string或PDO::quote来保护字符串