UPD что то заголовок поменялся...
Способ замены <script></script> на <script></script>?
Не знаю как правильно сформулировать вопрос возможно поэтому и не нашел ответ сам...
При поиске редактора для сайта наткнулся на 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?