У нас есть гибридное приложение webforms / asp.net, которое выполняет много частичных обновлений страниц из javascript с использованием jquery.
Типичный (небезопасный) шаблон в javascript нашего приложения состоит в том, чтобы ответить на запрос пользователя переписать часть страницы примерно так:
$.ajax({
type: "GET",
url: urlVariableHere,
success: function (data) {
$("#elementIdHere").html(data);
},
error: function (XMLHttpRequest, ajaxOptions, ex) {
errorHandlerFunction(XMLHttpRequest);
}
«urlVariableHere» указывает на метод контроллера MVC, который возвращает визуализированное представление MVC. Другими словами, метод Controller возвращает блоб необработанного HTML.
Этот шаблон небезопасен из-за вызова метода JQuery html (), который уязвим для атаки межсайтовых скриптов. Теперь нам нужно, чтобы это приложение прошло статический анализ Veracode, и этот небезопасный шаблон повторяется несколько сотен раз.
Хуман указал в своем ответе, что если мы вызываем метод Controller, который отображает представление, которое не использует метод Html.Raw, мы защищены от атаки XSS. Проблема в том, что нам нужно пройти статическое сканирование Veracode, и по внутренним причинам мы не можем пометить эти недостатки как «смягченные». По внутренним причинам приложение должно пройти статическое сканирование с нулевыми мерами.
Каков наилучший (то есть наиболее экономичный по времени) способ сделать это приложение безопасным и при этом сохранить возможность частичного обновления страницы из javascript? Прямо сейчас я вижу только три варианта, все они огромные усилия:
- Изменить каждую частичную обратную передачу на полную страницу обратной передачи.
- Измените каждый вызов ajax для получения JSON вместо HTML, а затем безопасно создайте элементы DOM из JSON, используя безопасные методы, такие как document.createElement (), element.setAttribute (), element.appendChild () и т. Д.
- Переписать приложение, чтобы использовать JavaScript-фреймворк (Angular, Vue) или библиотеку (React).
Мне не хватает более простого решения?