使用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
关注我的公众号