javascript - 對富文字編輯器提交的結果過濾

來源:互聯網
上載者:User
一般的富文字編輯器比如百度的ueditor,編輯後直接返回一段html代碼,為了防止xss,想問問大家如何過濾後入庫是比較好的解決方案?(前台讀取後直接顯示html,比如這個問題本身就是用富文字編輯器提交的)

目前知道可以用:

  • 富文字編輯器設定純文字粘貼(這個可能會造成使用者使用不方便,但sf的編輯器好像就是這麼做的,超連結倒是保留了)
  • 一些類庫比如 Kses PHP HTML 過濾類設定要保留的標籤和標籤屬性

大家有什麼好的高效的做法嗎?

回複內容:

一般的富文字編輯器比如百度的ueditor,編輯後直接返回一段html代碼,為了防止xss,想問問大家如何過濾後入庫是比較好的解決方案?(前台讀取後直接顯示html,比如這個問題本身就是用富文字編輯器提交的)

目前知道可以用:

  • 富文字編輯器設定純文字粘貼(這個可能會造成使用者使用不方便,但sf的編輯器好像就是這麼做的,超連結倒是保留了)
  • 一些類庫比如 Kses PHP HTML 過濾類設定要保留的標籤和標籤屬性

大家有什麼好的高效的做法嗎?

純文字展貼是用來減少無效html代碼數量的,在防範XSS方面沒有任何作用。用戶端的任何JS代碼在攻擊者面前都是裸的

如果只需要常見的富文本編輯,不需要直接改動html代碼,那麼可以考慮UBB code
如果必須直接支援html,可以找wordpress/drupal等開源項目的xss過濾器來用

對@帕奇式 的“拿起就用”方案不敢苟同。
如果目的是防XSS,在前端防是防不住的,一定需要在服務端過濾。
例如曾經人人網的日誌編輯框使用的是tinymce,前端帶了過濾功能(轉義大法),於是他們竟然在服務端就沒過濾!前端只要把JS禁了,讓tinymce載入失敗,露出裸的textarea來,就可以隨便注入JS代碼了。

所以防這個,不管前端防了多嚴,服務端一定都要再做一次。

狠一點,就把 "<" 和 ">" 轉義掉。
稍微寬鬆一點,就把script、iframe等標籤去掉。

這個問題的解決辦法很簡單
有多重方式一種是base64編碼解碼是一種

基本上就是轉義,保持了原樣輸出,
過濾這塊需要這樣操作,增加一個方法preg_match url的 凡是不是本站的都替換掉

看了看百度的ueditor,只能說很多東西設計得不夠自由和彈性。用關鍵字【過濾規則】也找不到在哪設定,所以還是建議不要用ueditor因為還不夠成熟!

那建議你可以:

  • KindEditor拿起就用
  • wysihtml5自訂樣式,因為這是個核心

基於wysihtml5製作富文字編輯器可以參考這裡bootstrap-wysihtml5。

以上兩個富文字編輯器都有過濾機制,你可以閱讀文檔瞭解一下便知道。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.