Intereting Posts
Отзывчивый сайт, не отображающий горизонтальные линии правильно из-за проблемы масштабирования Как реализовать многонаправленный эффект прокрутки? Значение атрибута jquery find div меньше или выше Вырастите div из верхнего правого угла? Что такое теневой корень c # преобразование pdf в html Автоматическое изменение размера изображения в макете streamа CSS для имитации компоновки html-таблицы Как я могу выбрать и загрузить несколько файлов с помощью HTML и PHP, используя HTTP POST? Отзывчивое фоновое изображение в div полной ширине h1 и диапазон Как хранить строки из файла CSV в Python и печатать данные с помощью HTML Могу ли я найти элемент с использованием регулярного выражения с Python и Selenium? Должен ли HTML быть закодирован до того, как он будет сохранен? Есть ли способ ТОЛЬКО разрешить ввод с помощью элементов управления счетчика на входном типе = «число»? Фоновый рисунок HTML

Простой дезинфицирующее средство для HTML в Javascript

Я ищу простой HTML-дезинфицирующее средство, написанное на JavaScript. Он не должен быть 100% -ной безопасностью XSS.

Я использую Markdown и редактор Markdown Markdown (ведущее отделение SO из github) на моем веб-сайте. Проблема в том, что HTML, показанный в предварительном просмотре, не фильтруется, как здесь, на SO. Я ищу простой / быстрый HTML-дезинфицирующее средство, написанное на JavaScript, чтобы я мог фильтровать содержимое windows предварительного просмотра.

Нет необходимости в полном синтаксическом анализаторе с полной защитой XSS. Я не отправляю вывод обратно на сервер. Я отправляю Markdown на сервер, где я использую правильный, полный дезактиватор HTML, прежде чем я сохраню результат в базе данных.

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

ОБНОВИТЬ

Я объясню немного лучше, зачем мне это нужно. На моем веб-сайте есть редактор, очень похожий на редактор здесь, на StackOverflow. Там есть текстовая область, чтобы ввести синтаксис MarkDown и окно предварительного просмотра под ним, которое покажет вам, как это будет выглядеть после отправки.

Когда пользователь отправляет что-то, он отправляется на сервер в формате MarkDown. Сервер преобразует его в HTML, а затем запускает для него HTML-дезинфицирующее средство для очистки HTML. MarkDown позволяет произвольный HTML, поэтому мне нужно его очистить. Например, пользователь вводит что-то вроде этого:

alert('Boo!'); 

Конвертер MarkDown не затрагивает его, так как это HTML. Дезинфицирующее средство HTML будет лишать его, поэтому элемент сценария не будет удален.

Но это не то, что происходит в окне предварительного просмотра. Окно предварительного просмотра только преобразует MarkDown в HTML, но не дезинфицирует его. Таким образом, окно предварительного просмотра будет иметь элемент сценария. Это означает, что окно предварительного просмотра отличается от фактического рендеринга на сервере.

Я хочу исправить это, поэтому мне нужен быстрый и грязный JavaScript-дезинфицирующее средство для JavaScript. Произойдет что-то простое с базовым элементом / атрибутом blacklisting и whitelisting. Он не должен быть безопасным для XSS, поскольку защита XSS выполняется с помощью дезинфицирующего средства HTML на стороне сервера.

Это просто, чтобы окно предварительного просмотра соответствовало фактическому рендерингу 99,99% времени, что достаточно для меня.

Вы можете помочь? Заранее спасибо!

    Вы должны взглянуть на рекомендованный в этом вопросе Sanitize / Rewrite HTML на стороне клиента

    И чтобы быть уверенным, что вам больше не нужно делать XSS, просмотрите ответы на этот вопрос. Как предотвратить атаки Javascript в пользовательский HTML-код

    для моей функции я только заботился о том, что строка не пуста и содержит только буквенно-цифровые символы. Это использует простой JS и никаких третьих библиотек или что-то еще. Он содержит длинное регулярное выражение, но он выполняет задание;) Вы можете использовать это, но ваше регулярное выражение будет чем-то более похожим «

      var validateString = function(string) { var validity = true; if( string == '' ) { validity = false; } if( string.match( /[ |<|,|>|\.|\?|\/|:|;|"|'|{|\[|}|\]|\||\\|~|`|!|@|#|\$|%|\^|&|\*|\(|\)|_|\-|\+|=]+/ ) != null ) { validity = false; } return validity; }