如何防止漂白剂逃逸 > Markdown 中使用的(块引用)标签

问题描述 投票:0回答:2

我正在使用漂白剂来净化用户输入。但我使用 Markdown,这意味着我需要块引用

>
符号才能通过,而不会被转义为
& gt;
,这样我就可以将它传递给 Misaka 进行渲染。

文档说默认情况下它会转义 html 标记,但没有说明如何为

>
符号关闭它。我仍然希望它能够转义实际的 html 标签。

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

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

python html django markdown sanitization
2个回答
2
投票

Bleach 是一个 HTML 清理工具,而不是 Markdown 清理工具。正如here所解释的,您应该首先通过 Markdown 运行用户输入,然后通过 Bleach 运行。像这样:

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

有关更多信息,请参阅我之前引用的评论


0
投票

您是否需要删除所有标签,但保留 > 不变?

  1. 剥离所有标签,获取输出
  2. html 解码步骤 1 的输出,并将该数据传递给 Misaka

第2步的简单方法:

输出.replace('>', '>')

更专业

import HTMLParser
h = HTMLParser.HTMLParser()
s = h.unescape(sanitized user input)
© www.soinside.com 2019 - 2024. All rights reserved.