Уценка в комментариях пользователя (с надлежащей дезинфекцией и Youtube видео) - PullRequest
0 голосов
/ 26 мая 2018

Я застрял в решении, как мне следует продолжить обработку Markdown и очистку Html.У меня есть требования этого пользователя для комментариев / статей:

  1. Пользователи должны иметь возможность использовать синтаксис Markdown
  2. Пользователи должны иметь возможность публиковать видео на YouTube / аудиозаписи yandex.music
  3. Конечно, пользователям не следует доверять, и их входные данные должны проверяться для всех видов атак
  4. В частности, я не хочу разрешать пользователям отправлять произвольные фреймы

Я даже отправил исправление в библиотеку markdig для поддержки yandex.music в расширениях мультимедиа.Но сейчас я застрял.Есть мои исследованные параметры:

Markdig, затем HtmlRuleSanitizer

Я настроил Markdig для преобразования youtube / yandex.music в iframes, чем для очистки с помощью HtmlRuleSanitizer.HtmlRuleSanitizer не имеет возможности разрешать iframe только для доменов, занесенных в белый список - поэтому он либо удалит youtube.com, либо разрешит evilsite.com.Я отправил предложение , но не получил никакого ответа.

HtmlRuleSanitizer, затем Markdig

Насколько я понимаю, это разрешит все виды XSS-атак - потому чтоПреобразование Markdown-to-Html по своей сути небезопасно .

Html-escape все, затем Markdig.

Согласно той же статье, это также не безопасно.

Markdig, затем HtmlSanitizer

У этого дезинфицирующего средства есть соответствующие ловушки (узел постобработки), но я беспокоюсь о поддержке этой библиотеки, и особенно о главной зависимости - поддержке AngleSharp (у него есть активные сбои воспроизводимых файлов, и, похоже, он находится в активной разработке без предоставления стабильного API, поэтому HtmlSanitizer, похоже, с трудом удерживается).

Итак, есть какие-нибудь предложения, как мне достичь этой цели?Я отказываюсь верить, что я только один с этой проблемой, и я надеюсь, что должен быть решаемым с существующими библиотеками в .net.Я готов внести некоторую особенность, если это необходимо, но я не готов ничего разветвлять.: -)

...