Jquery $ («#»).html (данные) уязвимы для XSS

#javascript #jquery #xss

#javascript #jquery #xss

Вопрос:

 $.get("/Controller/ActionMethod", function (data) {
    $("#id").html(data);
//  ^^^^^^^^^^^^^^^^^^^^
});
 

Выделенная строка содержит уязвимость, обнаруженную при проверке безопасности. Объект данных содержит некоторые гиперссылки для перенаправления других страниц. Это $("#id").text(data); не удовлетворит нашему требованию.

Пробовал это, но не работает.

 var X = data.replace(`/amp;/g`, "`amp;amp;`").replace(`/</g`, "`amp;<`").replace(`/>/g`, "`amp;>`");

$("#id").html(X);
 

Пожалуйста, предложите.

Комментарии:

1. Можете ли вы отредактировать вопрос и применить лучшее форматирование?

2. Кто дает вам этот отзыв? Каковы требования?

3. .text() здесь абсолютно правильный путь. Он защищен от XSS. Любое ваше собственное решение, скорее всего, уязвимо. Альтернативой было бы принять чрезвычайно ограниченный набор HTML и очистить все, что не соответствует. Еще лучше, если вы получите не HTML, а какой-нибудь промежуточный код (например, Markdown), который затем будет безопасно преобразован в HTML. Белый список всегда превосходит черный список.