Как Django обрабатывает выход, когда я использую редактор TinyMCE? - PullRequest
2 голосов
/ 05 декабря 2010

Как отобразить на странице только полужирный шрифт, курсив и все другие проблемы, не связанные с безопасностью?

Ответы [ 3 ]

2 голосов
/ 05 декабря 2010

Санитарная обработка HTML - довольно сложная задача.Спаммеры и другие неприятные люди все время придумывают новые способы контрабанды HTML через санитарию.Самый безопасный вариант - определить белый список безвредных тегов и тщательно отфильтровать все остальные теги с помощью настоящего парсера HTML (, а не с регулярными выражениями).

Существует несколько тегов шаблонов.и фильтры на djangosnippets.com, например, this или this .При выборе фильтра обратите внимание, что он использует белый список и анализатор HTML, например lxml.html (предпочтительно lxml.html.clean ) или BeautifulSoup .

2 голосов
/ 05 декабря 2010

Вероятно, имеет смысл настроить TinyMCE таким образом, чтобы пользователь мог вводить только те элементы, которые вы ему позволяете. TinyMCE имеет мощный набор правил для этого. Если вы используете django-tinymce, см. this для установки TINYMCE_DEFAULT_CONFIG на желаемые параметры.

1 голос
/ 05 декабря 2010

Для отображения всего HTML (без экранирования) вы можете использовать safe filter

{{ var|safe }}

В вашем случае, если вы хотите экранировать все, кроме определенных тегов, вы можете написать собственный фильтр, который делает это:

{{ var|mysafe }}

Читайте об этом здесь: http://docs.djangoproject.com/en/dev/howto/custom-template-tags/

Алгоритм фильтра может быть:

  1. Сбежать от всего
  2. Unescape только те теги, которые разрешено (с помощью .replace или регулярные выражения)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...