2011-02-17 73 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。