У меня есть jquery ajax-вызов, который возвращает XML. На сервере мы кодируем атрибуты xml, используя библиотеку Antixss от Microsoft, в частности, вызываем Encoder.XmlAttributeEncode.JQuery Ajax, возвращающий декодированные атрибуты XML, позволяет XSS
Результатов на сервере правильно кодируется
<data><item att1="Test" val="<script>alert("XSSFIX");</script>" /></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))
Я обновил мой вопрос, чтобы включить больше информации клиента. Я верю, что все, что мне нужно сделать, это html закодировать f.getattribute ('att1') и f.getAtttribute ('val'), и все должно быть хорошо. Любые предложения по лучшему html-кодеру для клиентской стороны? – maguy
@maguy: Замените конкатенацию строк механизмом шаблонов, который автоматически кодирует текст. – SLaks