如何防止漂白剂逃逸> Markdown中使用的(blockquote)标记

时间:2014-02-21 07:46:00

标签: python html django markdown sanitization

我正在使用漂白剂来清理用户输入。但我使用Markdown,这意味着我需要blockquote>没有被逃脱的符号经过GT;所以我可以将它传递给misaka进行渲染。

文档说默认情况下它会转义html标记,但没有说明如何关闭>符号。我仍然希望它能够逃脱实际的html标签。

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

在维护使用Markdown的能力的同时保护输入的任何其他想法将不胜感激。

2 个答案:

答案 0 :(得分:2)

Bleach是一种HTML清洁剂,而不是Markdown清洁剂。正如here所述,您应首先通过Markdown运行用户输入,然后通过Bleach运行。像这样:

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

有关详细信息,请参阅我之前引用的comment

答案 1 :(得分:0)

您是否需要剥离所有标签,但请保留>它是什么?

  1. 剥离所有标签,获取输出
  2. html解码步骤1的输出,并将该数据传递给misaka
  3. 第2步的简单方法:

      

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

    更专业

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