VSCode Markdown预览器默认执行HTML/JS存在XSS等风险,strict模式可禁用script、iframe、事件处理器等;建议设"markdown.preview.security": "strict"并避免预览不可信文件。

VSCode 内置的 Markdown 预览器默认会执行部分 HTML 和 JavaScript(如内联 、、onxxx 事件),这在打开不受信任的 Markdown 文件时可能引发 XSS、本地文件读取、命令执行等安全风险。
哪些内容会被执行?
预览器并非完全沙箱化,以下内容在预览时可能被解析或触发:
- 内联
标签(含javascript:伪协议) -
或远程 iframe(取决于 CSP 策略) - HTML 属性中的事件处理器,如
- 部分 CSS 中的
url(javascript:...)(现代版本已限制,但仍需留意旧版)
如何禁用危险行为?
VSCode 提供了明确的配置项来关闭执行能力:
Angel工作室企业网站管理系统全DIV+CSS模板,中英文显示,防注入sql关键字过滤,多浏览器适应,完美兼容IE6-IE8,火狐,谷歌等符合标准的浏览器,模板样式集中在一个CSS样式中,内容与样式完全分离,方便网站设计人员开发模板与管理。系统较为安全,以设计防注入,敏感字符屏蔽。新闻,产品,单页独立关键字设计,提高搜索引擎收录。内置IIS测试,双击打启动预览网站 Angel工作室企业网站
- 在设置中搜索 markdown.preview.security,将值设为 strict(推荐)
- 该模式下:所有脚本、内联事件、iframe、表单、object/embed 标签均被移除或禁用
- 也可通过
settings.json手动添加:
"markdown.preview.security": "strict"
日常使用建议
防范不靠运气,而靠习惯:
- 不要预览来源不明的 .md 文件(尤其是从邮件、论坛、GitHub PR 直接下载的)
- 编辑敏感文档前,检查右下角状态栏是否显示 “Preview Security: Strict”
- 需要运行脚本的场景(如本地文档站点),改用 Live Server 插件 + 独立浏览器,而非依赖预览器
- 企业或教学环境中,可通过
settings.json的"markdown.preview.enabled": false彻底禁用预览,改用导出为 HTML 后手动审查
基本上就这些。严格模式不是功能退化,而是把“渲染”和“执行”划清界限——Markdown 应该讲清楚内容,而不是悄悄跑代码。









