2011-02-19 39 views
-1

我正在開發一個基於php的web應用程序,其中有一個文本區域,用戶可以在其中鍵入任何他/她想要的內容,然後將內容存儲在數據庫中後顯示在另一個頁面上。該方案是用戶可以輸入HTML標籤。但是就功能限制而言,我希望允許用戶執行一些標籤,例如<a>,<div>等,使剩下的標籤顯示爲明文。
我以前貼了這個問題:
Prevent HTML data from being posted into form textboxes
但只回答方式,例如strip_tags()htmlspecialchars()其或者剝離HTML內容完全顯示剩餘明文或顯示的所有明文不帶選項添加任何標記爲例外,分別。請幫忙。乾杯。是否有可能在textarea內執行一些標記,而將其餘標記作爲明文?

回答

1

你可以看看HTML Purifier。這是專門爲此設計的圖書館。

它似乎可以處理任何形式的xss攻擊。另請參閱comparison頁面。

0

在最後一篇文章中提到過,strip_tags()是答案,如果您不習慣閱讀strip_tags()的手冊頁,您會看到您可以告訴它哪些標籤可以使用,這正是您想要的。

+0

我閱讀手冊頁面,但重點是它完全刪除不作爲例外添加到內容的標籤。我希望剩下的或標籤顯示爲明文。 – ikartik90 2011-02-19 06:46:52

+0

這是什麼意思? – 2011-02-19 07:10:28

+0

問題是我想讓用戶在頁面上顯示一些代碼,就像我們在做計算器時一樣。你有更好的主意來顯示代碼? – ikartik90 2011-02-19 17:28:36

0

檢查documentationstrip_tags,您會看到接受的第二個(可選)參數是一個允許的標籤數組。

0

編輯:誤解了。沒關係D:需要更多的睡眠。看起來你應該只是運行一個htmlspecialchars,並用正則表達式恢復所需的標籤

獲取PHP的翻譯表並去掉那些你不想要的,然後調用strtr();

$table = get_html_translation_table(HTML_SPECIALCHARS); 
$table['allowed_tag'] = ""; 
$table['another_allowed_tag'] = ""; 
strtr($str, $table); 

我還沒有測試,但它應該工作。

相關問題