2011-09-01 17 views
7

我正在用PHP編寫評論解析函數。爲什麼要在評論表單中使用BBCode而不是HTML?

由於BBCode不是一種真正的標記語言,我從來不喜歡寫作風格。
因此,我讓訪問者能夠在評論表單中使用基本的HTML代碼。
發佈時,PHP將檢查不允許的和無效的標記/屬性,並將其替換或刪除。

我相信它和BBCode完全一樣的工作和輸出。

如果這是真的,爲什麼有BBCode? BBcode比HTML有什麼優勢?

更新

單色回答

如果你確信自己的HTML過濾器是足夠安全的,你應該罰款雖然

好,我不相信寫作過濾器我自己,但有一些頂級的過濾器,如PHP簡單的HTML DOM解析器,HTML淨化器,htmLawed ...

BBCode由UBB開發,目前仍在廣泛使用,如phpBB。

UBB/phpBB的開發人員對於他們編寫完美的HTML過濾器的技能沒有信心嗎? (我猜不是)

另外,就像StackOverflow使用的Markdown ...如果HTML + Parser完成這項工作,爲什麼還要創造另一個「語言」? (除了保存幾位...)

+2

Markdown是新的標記。 – BoltClock

+1

我認爲HTML標記很容易被利用,你的檢查是解決方法。當涉及到查找安全漏洞時,黑客可以非常巧妙;) – knittl

+0

@knittl所以這是關於我/ PHP VS黑客。好吧,也許我應該'添加「如果......我的解析系統寫得很好/嚴格。」我真的很想看到一個針對html-allowed-comment-form的黑客示例。 – Jon

回答

2

BBCode消除了您的HTML過濾器可能有錯誤,以便評論者可以評論他不應評論的代碼的問題。 如果你確信你的HTML過濾器足夠安全,你應該沒問題。

另一個問題是HTML註釋可能會破壞您的佈局,例如,當評論者提出一個關閉</div>或類似的東西。

+4

不,它不。 BBCode解析器可能存在允許XSS的錯誤。 – Quentin

4

它的主要優點是防止不需要的代碼注入。這就是爲什麼我會使用BBCode或Markdown之類的東西。

至少你應該使用允許的HTML標籤的白名單而不是黑名單。

+0

白名單備註+1。 –

+3

*每個單一(身體)標籤*都可以附加腳本以附加屬性,例如樣式。您還需要一個attr名稱的白名單。 – Cheekysoft

1

BBCode開始流行,因爲允許用戶在試圖阻止XSS時限制訪問html。 BBCode在那裏解決方案像HTML Purifier之前變得流行。在所有現實中,BBCode和Html淨化器都有自己的安全問題。只是BBCode是解決這個問題的一個更簡單的方法。

0

使用BBcode +將所有左標記轉換爲htmlspecialchar似乎對我來說完全是XSS免費。 (除非BBcode語法分析器真的超級差)

最終,它們都達到了相同的目標。目前我選擇BBcode,因爲HTMLpurifier自動剝離標籤,而不是用html specialChar替換左標籤。至少在演示中,我沒有看到保留左標籤的功能。

因此,我們希望用戶編寫& lt;而不是自動將其轉換爲<。還有一些懶惰的問題來驗證所有的數據。

相關問題