2015-01-21 2 views
0

У меня есть jquery ajax-вызов, который возвращает XML. На сервере мы кодируем атрибуты xml, используя библиотеку Antixss от Microsoft, в частности, вызываем Encoder.XmlAttributeEncode.JQuery Ajax, возвращающий декодированные атрибуты XML, позволяет XSS

Результатов на сервере правильно кодируется

<data><item att1="Test" val="&lt;script&gt;alert(&quot;XSSFIX&quot;);&lt;/script&gt;" /></data> 

Но когда XML возвращаются к клиенту XML показывает декодируется

<data><item att1="Test" val="<script>alert("XSSFIX")</script>;" /></data> 

Атрибуты вытащены и добавляются к DOM , Глядя на лучшие методы обработки этой ситуации.

Update # 1 На клиенте я динамически создать таблицу и вставить значения атрибутов XML похож на это ниже. Затем, наконец, я добавляю таблицу (строку) в div.

... 
tableMarkup += "<tr><td>" + f.getAttribute('att1') + "</td><td>" + f.getAttribute('val') + "</td></tr>"; 

placeHolderDiv.append($(tableMarkup)) 

ответ

1

Это звучит, как вы на самом деле нужно два слоя побега:

  1. HTML-бежать содержимое, которое вы хотите объединить в HTML на клиенте
  2. XML-бежать содержимое, которое вам «повторно вставить в XML атрибут

HTML,-экранирование должно быть сделано на стороне клиента (например, использовать .text() вместо .html()).

XML,-Экранирование должно быть сделано вашей библиотеки XML (например, передавая строку XAttribute, вы не должны сцепить XML вручную)

+0

Я обновил мой вопрос, чтобы включить больше информации клиента. Я верю, что все, что мне нужно сделать, это html закодировать f.getattribute ('att1') и f.getAtttribute ('val'), и все должно быть хорошо. Любые предложения по лучшему html-кодеру для клиентской стороны? – maguy

+0

@maguy: Замените конкатенацию строк механизмом шаблонов, который автоматически кодирует текст. – SLaks

 Смежные вопросы

  • Нет связанных вопросов^_^