Подтвердить что ты не робот

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

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

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

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

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

UPDATE

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

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

<script>alert('Boo!');</script>

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

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

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

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

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

4b9b3361

Ответ 2

Мы разработали простой HtmlSantizer и открыли его здесь: https://github.com/jitbit/HtmlSanitizer

использование

var result = HtmlSanitizer.SanitizeHtml(input);

[Отказ от ответственности! Я один из авторов!]

Ответ 3

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

    var validateString = function(string) {

      var validity = true;

      if( string == '' ) { validity = false; }

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

          validity = false;
      }

      return validity;
    }