VSCode的内置Markdown预览器的安全风险与防范

25次阅读

vscode markdown预览器默认执行html/js存在xss等风险,strict模式可禁用script、iframe事件处理器等;建议设”markdown.preview.security”: “strict”并避免预览不可信文件。

VSCode的内置Markdown预览器的安全风险与防范

VSCode 内置的 Markdown 预览器默认会执行部分 HTML 和 javaScript(如内联 <script></script><iframe></iframe>onxxx 事件),这在打开不受信任的 Markdown 文件时可能引发 XSS、本地文件读取、命令执行等安全风险。

哪些内容会被执行?

预览器并非完全沙箱化,以下内容在预览时可能被解析或触发:

  • 内联 <script></script> 标签(含 javascript: 伪协议)
  • <iframe src="file:///..."></iframe> 或远程 iframe(取决于 CSP 策略)
  • HTML 属性中的事件处理器,如 <img src="x" onerror="alert(1)" alt="VSCode的内置Markdown预览器的安全风险与防范" >
  • 部分 css 中的 url(javascript:...)(现代版本已限制,但仍需留意旧版)

如何禁用危险行为?

VSCode 提供了明确的配置项来关闭执行能力:

VSCode的内置Markdown预览器的安全风险与防范

Angel工作室企业网站管理系统1.2

Angel工作室企业网站管理系统全DIV+CSS模板,中英文显示,防注入sql关键字过滤,多浏览器适应,完美兼容IE6-IE8,火狐,谷歌等符合标准的浏览器,模板样式集中在一个CSS样式中,内容与样式完全分离,方便网站设计人员开发模板与管理。系统较为安全,以设计防注入,敏感字符屏蔽。新闻,产品,单页独立关键字设计,提高搜索引擎收录。内置IIS测试,双击打启动预览网站    Angel工作室企业网站

VSCode的内置Markdown预览器的安全风险与防范 0

查看详情 VSCode的内置Markdown预览器的安全风险与防范

  • 在设置中搜索 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 应该讲清楚内容,而不是悄悄跑代码。

text=ZqhQzanResources