Как я могу разрешить теги <td> и <tr> в DOMPurify?

Я использую библиотеку 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??

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
80
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

Спасибо @Zac Anger, я только что добавил тег <table>, он был исправлен.

Surendranatha Reddy T 06.05.2023 08:27

Другие вопросы по теме