在MySQL中存储之前的TextArea数据清理

时间:2011-02-17 10:54:16

标签: php jquery mysql html

这是问题情景。我有一个文本框,用户可以在其中输入注释。但是,如果它们包含HTML标记或<A HREF='javascript:window.alert("Example of a link that displays an alert box");'> link </A>,并且当评论从MySQL数据库输出到页面上时,它们实际上会执行。我正在寻找一种方法来防止这种情况发生,只允许使用一些HTML标记(如粗体,斜体,下划线)。

我在发表评论之前在评论中使用此函数,以便存储在mysql数据库中:

function sanitize($data)
{
// remove whitespaces (not a must though)
$data = trim($data); 

// apply stripslashes if magic_quotes_gpc is enabled
if(get_magic_quotes_gpc())
{
$data = stripslashes($data);
}

// a mySQL connection is required before using this function
$data = mysql_real_escape_string($data);

return $data;
}

1 个答案:

答案 0 :(得分:2)

嗯,没有答案如何允许某些标签保持完整。

strip_tags()函数首先出现在一个人的脑海中,根本不安全,它会允许危险的JS属性。

所以,你必须使用像HTML Purifier这样的实用程序,或者只允许使用某些标签并消除所有其他标签或者用于BBCode的一些正则表达式。