Вы действительно должны разрешить только ненадежные данные в белый список хороших атрибутов, таких как: align, alink, alt, bgcolor, border, cellpadding, cellspacing, класс, цвет, cols, colspan, координаты, dir, face, height, hspace,ismap, lang, marginheight, marginwidth, несколько, nohref, noresize, noshade, nowrap, ref, rel, rev, rows, rowspan, прокрутка, форма, диапазон, сводка, tabindex, title, usemap, valign, значение, vlink, vspace,width
Вы действительно хотите сохранить ненадежные данные в обработчиках javascript, а также в атрибутах id или name (они могут перекрыть другие элементы в DOM).
Кроме того, если вы помещаете ненадежные данныев атрибут SRC или HREF, то это действительно ненадежный URL, поэтому вы должны проверить URL, убедиться, что это НЕ javascript: URL, а затем кодировать HTML-сущность.
Подробнее обо всем этом здесь: https://www.owasp.org/index.php/Abridged_XSS_Prevention_Cheat_Sheet