使用marked将markdown转换为html禁止script、style标签

原创
前端路迹
2023-3-24 08:27
编辑于 2023-3-24 11:41

使用marked 转换以下html

dddd

<script>alert(1)</script>
<style>div{color:red}</style>

script和style会生效,此时如果不想被转换为html标签,只是想纯文本展示。可以配置 sanitize。

const html = marked.parse(markdown, {
        breaks: true,
        sanitize: true,
});

转换后的html为。

<p>dddd</p>
<p><script>alert(1)</script>
</p>
<p><style>div{color:red}</style></p>

sanitize 配置会使所有html标签都失效,如果只想禁用script和style。可以使用第三方库sanitize-html

import sanitizeHtml from "sanitize-html"

function markdownToHtml(markdown) {
  const options = {
    sanitize: true,
    sanitizer: function (text) {
      return sanitizeHtml(text, {
        allowedTags: sanitizeHtml.defaults.allowedTags.filter(tag => tag !== 'script' && tag !== 'style')
      });
    }
  };
  return marked.parse(markdown, options);
}

上面配置了 sanitize 用 sanitizeHtml 过滤,这种方法直接会将 script 和 style 给移除调。

转换后的html如下:

<p>dddd</p>
<p>
</p>
<p></p>
转载请注明出处。本文地址: https://www.qinshenxue.com/article/use-marked-to-convert-markdown-to-html-forbidden-script-style-tags.html
关注我的公众号