2014-02-21 30 views
0

我正在使用漂白劑來消毒用戶輸入。但我使用Markdown,這意味着我需要blockquote>符號才能通過,而不會像& gt;所以我可以將它傳遞給misaka渲染。如何防止漂白> markdown中使用的(blockquote)標籤

該文檔默認默認說它轉義html標記,但沒有說如何關閉>符號。我仍然喜歡它逃避實際的html標籤。

http://bleach.readthedocs.org/en/latest/clean.html

用於消毒的輸入,而維修器材使用降價的能力,任何其他的想法,將不勝感激。

回答

0

您是否需要剝離所有標籤,但請保持原樣?

  1. 條的所有標籤,得到第1步的輸出
  2. HTML譯碼輸出,並傳遞數據到御阪

簡單方式爲步驟2:

output.replace( '& gt;','>')

更專業

import HTMLParser 
h = HTMLParser.HTMLParser() 
s = h.unescape(sanitized user input) 
+0

謝謝!簡單的方法可以很好地作爲一個快速解決方案,但它確實符合所有>符號,包括在html標籤的末尾。是否有可能讓它匹配一個新行之後的出現?我無法替換('\ n >','>') – aris

2

漂白劑是一種HTML清潔劑,而不是Markdown殺菌劑。正如here所解釋的那樣,您應該首先通過Markdown運行用戶輸入,然後通過Bleach運行。像這樣:

sanitized_html = bleach.clean(markdown.markdown(some_text)) 

欲瞭解更多信息,請參閱我之前引用的comment

+0

大多數人[這裏](http://stackoverflow.com/questions/1266650/should-i-sanitize-markdown)說你需要在將數據保存在數據庫中之前對其進行清理。就像那個線程中的OP一樣,我在數據庫中有一個字段用於原始的markdown和生成的html。 – aris

+0

@aris這不是我如何閱讀這些評論。事實上,他們聲稱你應該在「發送給網絡客戶之前」進行消毒。我沒有看到有人特意說你應該在保存到數據庫之前進行清理(即使這是OP的問題)。無論哪種方式,漂白劑不是一個Markdown消毒劑,所以它是這個工作的錯誤工具。 – Waylan

相關問題