Использование jquery html encoding XSS

После прочтения этого вопроса пользователи предупредили, что этот метод кодирования html небезопасен

    return $('<div/>').html(encodedText).text();

"не использовать jQuery.html(). text() для декодирования html-объектов, поскольку это небезопасно потому что пользовательский вход никогда не должен иметь доступ к DOM"

"Я предлагаю использовать более безопасную, более оптимизированную функцию"

Цель этого метода состоит в том, чтобы взять закодированный вход i.e Fish &amp; chips и произвести незакодированный вывод i.e Fish & Chips

Итак, как я понимаю, они утверждают, что для некоторого значения encodedText этот javascript может быть выполнен. Я попытался воспроизвести этот параметр encodedText до <script>alert(1)</script> и несколько других простых атак и не смог обнаружить признаков уязвимости XSS.

Мой вопрос: есть ли какая-либо демонстративная уязвимость xss в любом браузере при использовании $('<div/>').html(encodedText).text()

Ответ 1

Есть много способов сделать это, это один из способов с помощью onerror с тегом изображения.

var x = $("<div/>").html('<img src="X" onerror="alert(\'hi\');" />').text();
console.log(x);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

Ответ 2

$('<div/>').html('<img onerror="alert(0)" src=invalid>').text()