2011-02-17 74 views
0

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

存储在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; 
} 
+0

不支持的标签应该如何处理?按原样显示或删除? – 2011-02-17 10:58:09

+0

按原样显示,以免从评论 – Hirvesh 2011-02-17 11:00:00

回答

2

好了,没有回答如何让某些标签保持完好。

首先想到的strip_tags()函数根本不安全,它会允许危险的JS属性。

所以,你必须使用一些实用工具,如HTML净化器,或一些正则表达式,它只允许某些标记并消除所有其他的或为BBCode。