Markdown是一种轻量级的标记语言,通常用于编写技术文档和博客文章。随着网页应用程序的发展,许多前端开发人员选择使用Markdown来编写文档、注释和博客文章。但是,Markdown中的HTML代码可以导致安全漏洞和跨站点脚本攻击。为了避免这些问题,我们可以使用@gerhobbelt/markdown-it-sanitizer npm包,这是一种安全的Markdown渲染器,可以过滤掉危险的HTML代码和JavaScript。
安装
要使用@gerhobbelt/markdown-it-sanitizer npm包,您需要先安装Node.js和npm。安装完成后,您可以在终端中使用以下命令安装@gerhobbelt/markdown-it-sanitizer:
--- ------- ---------------------------------
用法
要使用@gerhobbelt/markdown-it-sanitizer,您需要先导入它:
----- -- - ------------------------- ----- --------- - --------------------------------------------- ----------------- - -- ------- -- ---
然后,您可以像往常一样使用markdown-it来渲染Markdown文本。@gerhobbelt/markdown-it-sanitizer将在渲染时自动过滤掉危险的HTML代码和JavaScript。
例如,以下代码将渲染Markdown文本,并将其作为HTML添加到一个div元素中:
----- -- - ------------------------- ----- --------- - --------------------------------------------- ----------------- - -- ------- -- --- ----- ------------ - -- ------ ------------------------------------ ----- ---- - ------------------------ ----- --------- - ------------------------------------- ------------------- - -----
选项
@gerhobbelt/markdown-it-sanitizer支持以下选项:
- allowedTags:一组允许的HTML标记。默认情况下,它包括a、abbr、b、blockquote、code、del、dd、div、dl、dt、em、h1、h2、h3、h4、h5、h6、hr、i、img、kbd、li、ol、p、pre、s、strike、strong、sub、sup、ul、br、ulink和span。
- allowedAttributes:一组允许的HTML属性。默认情况下,它包括href、src、align、alt、title、width、height、class、name、target、rel、id、lang、dir、cite、datetime、style和xml:lang。
例如,以下代码使用allowedTags选项来限制允许的HTML标记:
----- -- - ------------------------- ----- --------- - --------------------------------------------- ----------------- - ------------ - ---- ---- ----- --------- --- - ---
效果示例
以下是一个示例Markdown文本:
- ------ ---------------------------------- ---- -- - -------- ----- ---- -- -- ------------ ----- ---- -- - -------------------------------- ---- -- -- ---- ---------------------------------------------------------------------------------------- ----------- ----- --- ---- -- - --------------------- -------------------
Markdown-it将该文本转换为以下HTML:
---------- --------------------------------------- ------- -- - --------------------- ----- ---- -- -- ------------------- ----- ---- -- - -- ---------------------------------------- ---- -- -- ---- ---------------------------------------------------------------------------------------- ----------- ------- ---- -- - -----
注意,