我所知道的富文字編輯器就是像DZ論壇那樣,所見所得那樣的。
1:但是我一直有個疑問,不是說用戶端提交的資料要過濾嗎,不然不就是XXS嗎,DZ是UBB的方式處理的是嗎?
2:那些富文字編輯器,最後提交到伺服器後,那些包含html代碼的,能直接存到資料庫裡面嗎,肯定不能允許使用者這樣吧?
3:還有比如SF的這個Markdown編輯器原理是什麼呢,它後台資料庫有沒有儲存我們輸入的html,js代碼呢?
4:還有像DZ論壇這樣的使用者發帖,投票什麼的,這個編輯器內部是怎麼樣的,搞不懂,找處理的源碼又找不到……
我之前一直使用text文字框的,後台就直接過濾所有標籤,就這麼簡單,但是這樣就只能有普通的文本了,沒有DZ那樣使用者發帖那樣強大,現在想用一個富文字編輯器,但是不知道php後台該怎與富文字編輯器對接,比如百度的那個,或者SF的這個編輯器。
然後那個富文字編輯器插入圖片,那個是上傳圖片,然後返回圖片地址,插入到內容中嗎,那DZ的那個上傳附件呢,文章中的圖片還會惰性載入呢,這個是怎麼實現的呢,如果是直接img標籤插入到內容了實現不了吧,或者是用一個什麼圖片預留位置什麼的,然後js操作附件資料……
搞不懂,希望高手給我解釋一下,我知道原理再去看代碼應該會簡單許多,謝謝了!
回複內容:
我所知道的富文字編輯器就是像DZ論壇那樣,所見所得那樣的。
1:但是我一直有個疑問,不是說用戶端提交的資料要過濾嗎,不然不就是XXS嗎,DZ是UBB的方式處理的是嗎?
2:那些富文字編輯器,最後提交到伺服器後,那些包含html代碼的,能直接存到資料庫裡面嗎,肯定不能允許使用者這樣吧?
3:還有比如SF的這個Markdown編輯器原理是什麼呢,它後台資料庫有沒有儲存我們輸入的html,js代碼呢?
4:還有像DZ論壇這樣的使用者發帖,投票什麼的,這個編輯器內部是怎麼樣的,搞不懂,找處理的源碼又找不到……
我之前一直使用text文字框的,後台就直接過濾所有標籤,就這麼簡單,但是這樣就只能有普通的文本了,沒有DZ那樣使用者發帖那樣強大,現在想用一個富文字編輯器,但是不知道php後台該怎與富文字編輯器對接,比如百度的那個,或者SF的這個編輯器。
然後那個富文字編輯器插入圖片,那個是上傳圖片,然後返回圖片地址,插入到內容中嗎,那DZ的那個上傳附件呢,文章中的圖片還會惰性載入呢,這個是怎麼實現的呢,如果是直接img標籤插入到內容了實現不了吧,或者是用一個什麼圖片預留位置什麼的,然後js操作附件資料……
搞不懂,希望高手給我解釋一下,我知道原理再去看代碼應該會簡單許多,謝謝了!
html代碼直接存資料庫,使用者寫的什麼就存什麼。
各種編輯器都是產生html代碼,然後點擊提交html的代碼。
這有什麼好疑問的嗎?
html有個pre標籤,你造嗎?
要防止JS注入。
很簡單的啊,PHP輸出到前端之前,用str_replace函數,把<替換成& lt;(去掉空格),把>替換成& gt;(去掉空格)等等。
請百度“HTML特殊字元編碼”。
保證標籤不會起作用,JS代碼不會執行就完了。
防禦XSS攻擊,最簡單粗暴的做法就是用htmlspecialchars把特殊字元(&,",',<,>)
替換為HTML實體(&"'<>)
後輸出.
$html = str_replace(array("\r\n", "\r", "\n"), '
', $html);echo $htm;
上面這種實現非常簡單,而且安全,顯示也非常清爽.編輯器就一個普通的文字框textarea就好了.
防禦XSS攻擊,最複雜的做法就是自己寫正則過濾,不過還好有HTMLPurifier庫,除了能過濾XSS代碼,還能把不完整的標籤補全或者去掉.
purify($html);
可以通過BBCode或者Markdown標記定義一些HTML功能,比如BBCode:
[b]粗體文字[/b][color=#FF0000]紅色文字[/color][img=PunBB bbcode test]http://127.0.0.1:8080/punbb/img/test.png[/img] [url=http://127.0.0.1:8080/punbb/]PunBB forum[/url]
使用者在文字框裡輸入BBCode標籤,頁面輸出時把BBCode正則替換成HTML,經過HTMLPurifier過濾後安全輸出.
SF的編輯器是markdown文法編輯器,原始碼在此:
一個結構清晰的,易於維護的,現代的PHP Markdown解析器
我還看到網上有那種編輯器,糾結