Я застрял в решении, как мне следует продолжить обработку Markdown и очистку Html.У меня есть требования этого пользователя для комментариев / статей:
- Пользователи должны иметь возможность использовать синтаксис Markdown
- Пользователи должны иметь возможность публиковать видео на YouTube / аудиозаписи yandex.music
- Конечно, пользователям не следует доверять, и их входные данные должны проверяться для всех видов атак
- В частности, я не хочу разрешать пользователям отправлять произвольные фреймы
Я даже отправил исправление в библиотеку markdig
для поддержки yandex.music в расширениях мультимедиа.Но сейчас я застрял.Есть мои исследованные параметры:
Я настроил Markdig
для преобразования youtube / yandex.music в iframes, чем для очистки с помощью HtmlRuleSanitizer
.HtmlRuleSanitizer
не имеет возможности разрешать iframe только для доменов, занесенных в белый список - поэтому он либо удалит youtube.com
, либо разрешит evilsite.com
.Я отправил предложение , но не получил никакого ответа.
HtmlRuleSanitizer, затем Markdig
Насколько я понимаю, это разрешит все виды XSS-атак - потому чтоПреобразование Markdown-to-Html по своей сути небезопасно .
Html-escape все, затем Markdig.
Согласно той же статье, это также не безопасно.
У этого дезинфицирующего средства есть соответствующие ловушки (узел постобработки), но я беспокоюсь о поддержке этой библиотеки, и особенно о главной зависимости - поддержке AngleSharp (у него есть активные сбои воспроизводимых файлов, и, похоже, он находится в активной разработке без предоставления стабильного API, поэтому HtmlSanitizer, похоже, с трудом удерживается).
Итак, есть какие-нибудь предложения, как мне достичь этой цели?Я отказываюсь верить, что я только один с этой проблемой, и я надеюсь, что должен быть решаемым с существующими библиотеками в .net.Я готов внести некоторую особенность, если это необходимо, но я не готов ничего разветвлять.: -)