@MoDPhoenix

Django cпособ замены кавычек <script></script> на кодировку внутри html контента?

UPD что то заголовок поменялся...

Способ замены <script></script> на &lt;script&gt;&lt;/script&gt;?


Не знаю как правильно сформулировать вопрос возможно поэтому и не нашел ответ сам...

При поиске редактора для сайта наткнулся на quilljs. Красивый и легкий редактор, только проблема в том что он сохраняет данные в своем формате при помощи json. Для меня это неудобно и хочется сохранять в БД чистый html к тому же с коробки редактор не поддерживает textarea.

Для решения этой задачи я сделал вот такую конструкцию:

var quill = new Quill('#editor', {
    theme: 'snow',
    placeholder: 'Напишите что то...',
  });

  $(document).ready( function() {
    var content = document.getElementById('id_content');
    var qlEditor = document.getElementsByClassName('ql-editor');

    if (content.value === '') {
      // Ести поле textarea пустое, вставлет пробел 
      content.value = ' ';
    } else {
      // При редактировании поста вставляет html
      // с textarea в quill редактор
      $('.ql-editor').html(content.value);
    }
  });
  // Передает html разметку с редактора в textarea
  // при отправке формы
  var form = document.querySelector('form');
  form.onsubmit = function() {
    var content = document.getElementById('id_content');
    content.value = quill.root.innerHTML;
  };


Тут просто берется отредактированный html код с редактора и при отправке формы вставляется в textarea, а при редактировании происходит обратный процесс.

Вот собственно я и подошел к вопросу, возникла проблема с безопасностью. Например можно отключить js в браузере или поделать POST запрос и записать что то в textarea, например подключить скрипты и стили. Поскольку в Dajngo выводится html вот так {{ post.content|safe }} то никакого экранирования не происходит и скрипты просто подключаются на страницу.

Есть ли какая то библиотека или пример как можно заменить скобки < > на кодировку только для тегов script и link?
  • Вопрос задан
  • 239 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 17:06
15000 руб./за проект
19 апр. 2024, в 16:53
1000 руб./за проект
19 апр. 2024, в 16:45
5000 руб./за проект