如何在 DOMPurify 中允许 <td> 和 <tr> 标签?

How can I allow <td> and <tr> tags in DOMPurify?

提问人:Surendranatha Reddy T 提问时间:5/6/2023 更新时间:5/6/2023 访问量:425

问:

我正在使用 javascript 文件中的 DOMPurify 库来防止 XSS 攻击。

这是代码。

主 .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>

我的JS.js

import DOMPurify from './purify.js';

$(document).ready(function() {
      var tanCols1 = ''
      for (var i = 0; i<10; i++){
          tanCols1 += "<td>"+i+"</td>";
          }
      console.log('original--> ', tanCols1)
      var clean_data = DOMPurify.sanitize(tanCols1, {ALLOWED_TAGS:['option', 'td', 'tr', 'a', 'table']})
      console.log('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>

如何在 DOMPurify 中允许和标记??<td><tr>

JavaScript HTML jQuery Dompurify

评论


答:

1赞 Zac Anger 5/6/2023 #1

这种行为可能很烦人,但这是意料之中的。DOMPurify 在内部依赖于 JSDOM 或浏览器 DOM,除非在表中,否则 td/tr/th 无效。您传递的字符串不包括 ,因此 DOM 只是扔掉了这些标签。另请参阅存储库上的 this、thisthis 和其他问题table

评论

0赞 Surendranatha Reddy T 5/6/2023
感谢 Anger,@Zac我刚刚添加了 <table> 标签,它得到了修复。