2014-02-21 1 views
0

Я использую отбеливатель для дезинфекции ввода пользователя. Но я использую Markdown, что означает, что мне нужно, чтобы символ blockquote> прошел, не будучи экранированным как & gt; поэтому я могу передать его misaka для рендеринга.Как предотвратить отбеливание от метки утечки> (blockquote), используемой в Markdown

В документации говорится, что по умолчанию она пропускает разметку html, но не говорит, как отключить ее для символа>. Мне все равно хотелось бы избежать реальных тегов html.

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

Любые другие идеи для дезинфицирующего ввода, а сохранением возможности использовать Markdown будут оценены.

ответ

0

Вам нужно раздеть все теги, но оставьте> как есть?

  1. полосы все тэги, получить на выходе
  2. HTML декодирования выход шаге 1, и передать эти данные для Мисака

Простой способ для шага 2:

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

Профессиональный

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

спасибо! простой способ работает отлично, как быстрое решение, но он соответствует всем> символам, в том числе в конце тегов html. возможно ли, чтобы он соответствовал только> появлению после новой строки? я не смог заменить ('\ n >', '>') – aris

2

Bleach - это дезинфицирующее средство для 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 в этом потоке, у меня есть поле в базе данных как для исходной уценки, так и для сгенерированного html. – aris

+0

@aris, это не то, как я читаю эти комментарии. Фактически, они заявляют, что вы должны дезинфицировать «перед отправкой веб-клиентам». Я не вижу, чтобы кто-то конкретно говорил, что вы должны санировать, прежде чем сохранять в БД (хотя это был вопрос OP). В любом случае, Bleach не является дезинфицирующим средством Markdown, поэтому это неправильный инструмент для работы. – Waylan

Смежные вопросы