Используя безопасный фильтр в Django для полей обогащенного текста

В Perl Вы могли сделать это:

{
  ( VeryLongCondition_1 ) or last;
  ( VeryLongCondition_2 ) or last;
  ( VeryLongCondition_3 ) or last;
  ( VeryLongCondition_4 ) or last;
  ( VeryLongCondition_5 ) or last;
  ( VeryLongCondition_6 ) or last;

  # Guarded code goes here
}

, Если какой-либо сбой условий это просто продвинется после блока. При определении каких-либо переменных, которые Вы хотите иметь в наличии после блока необходимо будет определить их перед блоком.

10
задан Peter Mortensen 25 January 2010 в 20:48
поделиться

3 ответа

Вы правы, когда беспокоитесь о необработанном HTML, но не только о браузерах с отключенным Javascript. Рассматривая безопасность вашего сервера, вы должны игнорировать любую работу, выполняемую в браузере, и смотреть исключительно на то, что сервер принимает и что с ним происходит. Ваш сервер принимает HTML и отображает его на странице. Это небезопасно.

Тот факт, что TinyMce цитирует HTML, является ложной защитой: сервер доверяет тому, что он принимает, чего он не должен.

Решение этой проблемы состоит в том, чтобы обработать HTML-код по его прибытии, чтобы удалить опасные конструкции . Это сложная проблема. Взгляните на шпаргалку по XSS , чтобы увидеть широкий спектр вводных данных, которые могут вызвать проблемы.

lxml имеет функцию для очистки HTML: http://lxml.de/lxmlhtml .html # cleaning-up-html , но я никогда им не пользовался,

13
ответ дан 3 December 2019 в 14:53
поделиться

На этот вопрос нет хорошего ответа. TinyMCE генерирует HTML, а функция автоматического экранирования django специально удаляет HTML.

Традиционное решение этой проблемы заключалось в использовании какого-либо языка разметки, отличного от html, на стороне ввода пользователя (bbcode, markdown и т. Д.) Или занесения в белый список ограниченного количества тегов HTML. TinyMCE / HTML обычно являются подходящими решениями ввода только для более или менее доверенных пользователей.

Подход с использованием белого списка сложно реализовать без каких-либо дыр в безопасности. Единственное, чего вы не хотите делать, - это пытаться просто обнаруживать «плохие» теги - вы ПРОПУСТИТЕ крайние случаи.

3
ответ дан 3 December 2019 в 14:53
поделиться

Вы можете использовать шаблонный фильтр « removetags » и просто удалить «сценарий».

7
ответ дан 3 December 2019 в 14:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: