Безопасна ли защита от python на ненадежном вводе?

Python-Markdown включает такие функции, как экранирование необработанного HTML, которые, очевидно, предназначены для обеспечения безопасности на ненадежном входе, и, как правило, Markdown обычно используется для отображения пользовательского ввода, например, здесь, на SO.

Но действительно ли эта реализация заслуживает доверия? Кто-нибудь здесь изучал это, чтобы решить, безопасно ли работать на произвольном входе?

Я вижу, что есть, например, Markdown в Django XSS safe и Secure Python Markdown Library, но является "безопасным 'действительно безопасен?

Ответ 1

Библиотека Python Markdown, насколько вам известно, безопасна, если вы правильно ее используете. См. Ссылку для получения подробной информации о том, как использовать его безопасно, но короткая версия: важно использовать последнюю версию, установить safe_mode и установить enable_attributes=False.

Обновление: safe_mode теперь не рекомендуется из-за проблем с безопасностью. См. Https://github.com/Python-Markdown/markdown/commit/7db56daedf8a6006222f55eeeab748e7789fba89. Вместо этого используйте отдельное средство для очистки HTML, такое как HTML Purifier.