Как избежать JavaScript в HTML-строке, сохраняя при этом HTML-код без отступления? - PullRequest
1 голос
/ 01 июня 2011

У нас есть веб-приложение.В некоторых местах есть редактор WSIWYG / RichText на основе JavaScript.Он фильтрует некоторый JavaScript, но использует текст HTML для форматирования своего содержимого.

К сожалению, он не фильтрует весь JavaScript.Мне удалось проверить XSS-атаку с помощью обработчика событий.Я думаю, что JavaScript-фильтрация JavaScript на стороне клиента вообще не безопасна, потому что на стороне клиента им можно манипулировать.

Так что я хотел бы отфильтровать или избежать JavaScript на стороне сервера.Я коротко взглянул на ESAPI для Java.Но у нас есть требование, я не знаю, особенное оно или проблема: элементы HTML, которые использует редактор, не должны фильтроваться или экранироваться, только JavaScript.HTML-код должен отображаться обычным образом в браузере.

  • Есть ли безопасный способ избежать или отфильтровать JavaScript, сохранив HTML-код таким, какой он есть?помогите мне сделать это?
  • Как мне это сделать.

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 01 июня 2011

Трудно сказать, какие схемы перехода должны быть использованы для выхода из JavaScript, не зная, уязвимо ли приложение для атак XSS на основе DOM или обычных (отраженных и постоянных) атак XSS.

ESAPI для Java поможет в обоих случаях. В случае атак XSS на основе DOM вам потребуется кодировать небезопасные данные несколько раз (и, при необходимости, использовать различные схемы кодирования) , чтобы гарантировать, что каждый анализатор в цепочке синтаксического анализа не будет подвергаться XSS атаки. В случае отраженных или постоянных атак XSS вам обычно нужно применить экранирование только один раз в соответствующем контексте .

Следует помнить, что использование необработанного HTML само по себе также небезопасно, что приводит к XSS. Возможно, вы захотите взглянуть на другой подход к дезинфекции ресурсов; в этом случае может быть оправданным использование AntiSamy для фильтрации HTML.

0 голосов
/ 01 июня 2011

Вам необходимо проанализировать HTML-код и отклонить любые теги и атрибуты, которые не входят в строгий белый список безопасных тегов / атрибутов.

Белый список не будет включать такие теги, как <script>, <style>или <link>, и он не будет включать такие атрибуты, как onclick, onload или style.

Также следует убедиться, что атрибуты href и src используют http или https протоколы (или относительный путь), а не javascript:.

...