Безопасная библиотека Python Markdown [закрыта]

Я хотел бы, чтобы пользователи могли оставлять расширенные текстовые комментарии, возможно, используя уценку. Я установил библиотеки, используемые на Reddit, но обеспокоен атакой с внедрением javascript, которая произошла в прошлом году, тем более что я до сих пор не знаю, как именно была осуществлена ​​атака. Должен ли я по-прежнему беспокоиться о безопасности комментариев? Есть ли тестовая строка, которую я могу запустить в своей системе, чтобы проверить наличие тех же недостатков, которые привели к краху Reddit?


person MichaelBlume    schedule 01.03.2010    source источник


Ответы (3)


Reddit теперь использует библиотеку скидок.

person jedberg    schedule 06.03.2010
comment
Я работаю в чистой среде Python (движок приложений Google), поэтому не думаю, что смогу использовать библиотеку C. Я смотрю на упомянутую выше библиотеку Scavenger, а также смотрю на код filter.py и markdown.py из Reddit. Библиотека freewisdom предназначена для включения в другой проект, тогда как очевидно, что вы хотели, чтобы код reddit работал в reddit, так что это склоняет меня к коду freewisdom. С другой стороны, мне любопытно, почему вам вообще понадобилось писать собственный код фильтра — есть ли уязвимости в общедоступных библиотеках, о которых мне следует знать? - person MichaelBlume; 16.03.2010

Python-Markdown — более или менее «стандартный» — имеет «безопасный функция режима, экранирующая html-теги. Этого должно быть достаточно, чтобы противостоять большинству атак HTML-инъекций.

person Wander Nauta    schedule 02.03.2010

В других ответах упоминается безопасный режим Python-Markdown, но теперь он устарел. Авторы Python-Markdown были процитированы, говоря:

«безопасный режим» был неудачным выбором имени, которое мы продолжаем использовать для обратной сопоставимости (старый код все еще работает с нашими более новыми версиями). На самом деле это режим без разметки. Другими словами, это всего лишь способ запретить необработанный HTML-код, который на самом деле не гарантирует безопасность.

Теперь они рекомендуют использовать дезинфицирующее средство HTML, такое как Bleach, для очистки вывода Markdown. mdx_bleach — это расширение Python-Markdown, которое делает именно это. Отказ от ответственности: я являюсь автором этого расширения.

Поскольку он использует html5lib для анализа фрагментов документов так же, как это делают браузеры, Bleach чрезвычайно устойчив к неизвестным атакам, гораздо более устойчивым, чем дезинфицирующие средства на основе регулярных выражений.

person Wenzil    schedule 16.04.2015