我正在構建一個應用程序,要求用戶一次輸入大塊文本,如段落。我安裝了一個編輯器(CKeditor),爲用戶提供了一個很好的界面來編輯他們的文本等。問題是我不能在輸入數據之前清理輸入,因爲它會擦除所有的HTML,文本會丟失段落和其他樣式。安全所見即所得選項
有沒有一種方法可以安全地存儲這些數據並保持基本樣式,如段落甚至文本顏色?
我正在構建一個應用程序,要求用戶一次輸入大塊文本,如段落。我安裝了一個編輯器(CKeditor),爲用戶提供了一個很好的界面來編輯他們的文本等。問題是我不能在輸入數據之前清理輸入,因爲它會擦除所有的HTML,文本會丟失段落和其他樣式。安全所見即所得選項
有沒有一種方法可以安全地存儲這些數據並保持基本樣式,如段落甚至文本顏色?
這是我所做的。我不得不與工作和建立定製公告板和論壇系統。當你有人試圖放置風格化的內容,圖像,視頻,表情,等等......你需要某種形式的內容放置,同時也消毒這些帖子。
您有一些選擇。我的建議是找到一個有BBCode插件的編輯器。當帖子進入你的數據庫時,任何具有HTML元素的東西都會出現在括號內(即; [])而不是打開/關閉標籤。所以如果你想加粗東西,你可以使用[B]加粗這個[/ B]。然後你做一個簡單的功能,去除這些BBCode元素,並用適當的HTML代碼替換它們。
你可以做的另一件事,我不推薦,但看到發生,是str_replace所有打開和關閉標記與他們的html實體,當你插入到數據庫中,然後str_replace所有相應的html實體到當您顯示帖子時打開和關閉標籤。
我之所以推薦BBCode或者至少是某種降價,是因爲您可以完全關閉用戶利用該帖子攻擊您的能力,同時讓他們設置帖子的風格。
HTML BBCode Parser (Pear Package) - 如果您使用BBCode路線,這將幫助您。
CKEditor BBCode Plugin - 您可以將其添加到您的CKEditor所見即所得並運行。
謝謝!這聽起來完全像我在找的東西。我要檢查一下。 – user3324581
你需要HTML代碼嗎?或者你可能會考慮實施類似BBCode的東西嗎?有一些所見即所得編輯器有一個BBCode插件,所以你可以清理帖子,但保持風格。如果您在JS/jQuery中擁有一些技術訣竅,您可以輕鬆地使用BBCode實現您自己的所見即所得。 – lxndr
這是StackOverflow上數十個問題的重複。請參閱http://stackoverflow.com/questions/5512712/sanitizing-html-input或http://stackoverflow.com/questions/2721184/php-html-sanitizer或http://stackoverflow.com/questions/2319956/are -there-any-good-php-based-html-filters-available或http://stackoverflow.com/questions/8442467/filter-html-on-php – Reinmar