Я использую библиотеку DOMPurify в файле javascript для предотвращения атак XSS.
Вот код.
main.html
<html>
<head>
<title>Online jQuery Editor</title>
</head>
<body>
<script src = "https://code.jquery.com/jquery-3.6.4.min.js"></script>
<script type = "module" src = "myJS.js"></script>
<h1>jQuery element Selector</h1>
<k1 id = "k1"></k1>
</body>
</html>
myJS.js
import DOMPurify from './purify.js';
$(document).ready(function() {
var tanCols1 = ''
for (var i = 0; i<10; i++){
tanCols1 += "<td>"+i+"</td>";
}
console.info('original--> ', tanCols1)
var clean_data = DOMPurify.sanitize(tanCols1, {ALLOWED_TAGS:['option', 'td', 'tr', 'a', 'table']})
console.info('cleaned--> ', clean_data)
$("#k1").append(clean_data)
});
оригинал --> <td>0</td><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td><td>9</td>
очищенный --> 0123456789
Ожидаемый результат -> <td>0</td><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td><td>9</td>
Как я могу разрешить теги <td> и <tr> в DOMPurify??



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Такое поведение может раздражать, но оно ожидаемо. DOMPurify полагается на JSDOM или DOM браузера внутри, и td/tr/th недействительны, если только они не находятся внутри таблицы. Строка, которую вы передаете, не включает table, поэтому DOM просто отбрасывает эти теги. Смотрите также это , это , это и другие выпуски в репозитории.
Спасибо @Zac Anger, я только что добавил тег <table>, он был исправлен.