javascript - 如何允许 `dompurify` 中的 iframe 标记包括其所有属性

标签 javascript dompurify

我希望 dompurify 允许 iframe 标签,并且我将 iframe 添加为异常(exception) (ADD_TAGS)。但这会删除它的某些属性。我希望所有属性都在那里。

<!doctype html>
<html>
    <head>
          <script src="https://cdnjs.cloudflare.com/ajax/libs/dompurify/1.0.3/purify.min.js"></script>    </head>
    <body>
        <!-- Our DIV to receive content -->
        <div id="sanitized"></div>

        <!-- Now let's sanitize that content -->
        <script>
            /* jshint globalstrict:true, multistr:true */
            /* global DOMPurify */
            'use strict';

            // Specify dirty HTML
            var dirty = '<iframe allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" frameborder="0" height="315" scrolling="no" src="https://www.youtube.com/embed/vJG698U2Mvo" width="560"></iframe>';

            var config = { ADD_TAGS: ['iframe'], KEEP_CONTENT: false }

            // Clean HTML string and write into our DIV
            var clean = DOMPurify.sanitize(dirty, config);
            console.log('clean: ', clean)
            document.getElementById('sanitized').innerHTML = clean;
        </script>
    </body>
</html>

这是清理后的输出

"clean: <iframe width='560' src='https://www.youtube.com/embed/vJG698U2Mvo' height='315'></iframe>"

最佳答案

如果您只想允许 iframe 标签,请使用 ALLOWED_TAGS 而不是 ADD_TAGS,它允许默认允许的标签和默认不允许的 iframe 标签。

允许所有默认标签和 iframe 标签:

DOMPurify.sanitize(dirty, { ADD_TAGS: ["iframe"], ADD_ATTR: ['allow', 'allowfullscreen', 'frameborder', 'scrolling'] });

只允许 iframe 标签:

DOMPurify.sanitize(dirty, { ALLOWED_TAGS: ["iframe"], ADD_ATTR: ['allow', 'allowfullscreen', 'frameborder', 'scrolling'] });

关于javascript - 如何允许 `dompurify` 中的 iframe 标记包括其所有属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60299226/

相关文章:

Javascript,使用正则表达式仅替换 HTML 标签之外的内容

javascript - 有必要清理 JSON 吗?

javascript - 使用 DOMPurify 清理 HTML 时允许属性的安全含义

php - Jquery 数字范围验证

javascript - 找不到模块 : Can't resolve 'dns' in '/Users/Austin/node_modules/pg/lib'

javascript - 如何在网页中以单一表单和单一 Controller 实现 Angular js Material 的两个md-autocomplete?

javascript - Jquery切换具有相同ID的图像

javascript - NodeJS 需要一个文件中的所有模块,好的做法?

javascript - 如何在前端 js 文件中安装、导入和使用 DOMPurify?