2008-10-01 87 views
1

如何限制用戶可以輸入到文本框中的HTML類型?我正在運行一個小型論壇,使用一些我正在測試的自定義軟件,但我需要知道如何限制HTML輸入。有什麼建議麼?將HTML輸入限制爲文本框

回答

2

我建議稍微另一種方法:

  • 不過濾傳入的用戶數據(除預防SQL注入攻擊)。用戶數據應儘可能保持純淨。
  • 過濾數據庫中的所有傳出的數據,這是哪裏的東西像標籤剝離等。應該發生

保持用戶數據的清潔讓你在它是如何顯示的更多的靈活性。過濾所有外發數據是一個很好的習慣(沿着永不相信的數據模型)。

0

提交文本後,您可以使用PHP中的正則表達式去除任何/所有與您的預定義集合不匹配的標籤。

它看起來像下面這樣:

find open tag (<) 
if contents != allowed tag, remove tag (from <..>) 
+0

重要的是使用白名單 - 尋找你將允許的標籤,而不是搜索你不想要的標籤。 – 2008-10-01 18:03:53

0
  1. 解析輸入提供,剝離不完全匹配您允許列表中的所有HTML標籤。這可以是一個複雜的正則表達式,也可以通過輸入字符串的char []進行有狀態迭代,從而構建允許的輸入字符串並剝離img等標籤上的不需要的屬性。

  2. 使用不同的代碼系統(BB代碼,降價)

  3. 找一些代碼網上說已經這樣做了,爲您實施的基礎來使用。例如Slashcode必須執行此,因此尋找其在Perl實現,並使用正則表達式(我認爲是有)

2

您沒有說明什麼論壇是內置的,但如果它的PHP,退房:

http://htmlpurifier.org/

庫特徵:白名單,搬運,良好的,嵌套,屬性,XSS安全標準安全

0

無論你使用什麼,一定要知道什麼樣的HTML內容可能是危險的。

例如一個<腳本>標記非常明顯,但在IE中,style>標記與一樣糟糕,因爲它可以調用JScript命令。

實際上,任何style =「...」屬性都可以在IE中調用腳本。

<對象>將是一個更多的標記是厭倦的。

0

PHP帶有一個簡單的功能strip_tag去除HTML標籤。它允許某些標籤不被剝離。

實施例#1用strip_tags()的例子

<?php 
$text = '<p>Test paragraph.</p><!-- Comment --> <a href="#fragment">Other text</a>'; 
echo strip_tags($text); 
echo "\n"; 

// Allow <p> and <a> 
echo strip_tags($text, '<p><a>'); 
?> 

上面的示例將輸出:

Test paragraph. Other text 
<p>Test paragraph.</p> <a href="#fragment">Other text</a> 

個人的一個論壇,我會用BB代碼或降價因爲量支持和功能,如實時預覽。