Md实用标签2
Md实用标签2
致歉
这里是对之前同系列文章的一个补充
在22年我发布过一篇 《Markdown实用的Html标签》 的文章。而现在看来,尽管我对各个平台的兼容性都做了一些兼容性测试、并绘制了兼容性表格。但当时的我对这方面的见解不够成熟、部分内容不够严谨。在此向之前被误导的读者道歉。
主要是 center、font、big、s 等标签的使用。我当初的 “是否建议” 使用的的说法存在一些问题。

过时标签问题
其实从我当初的兼容性测试,已经可以看到一些端倪。如一些平台不支持center标签。我当时只认为是安全性考虑禁用掉部分标签。
而真实原因是,在HTML5中,部分标签其实是被废弃掉了。只是一些平台依然向下兼容。
对于这部分标签,我们最好是不要去用的!在某些平台无法被支持。
如我之前测试的中不生效的博客平台,又如vuepress等文本编译系统遇到这些标签会直接报错。
这里列举一些过时标签和替代标签: (参考文章)
| 用于指定Java applet,已被 |
| 用于指定基准字体大小,已被CSS的font-size属性替代。 |
| 用于指定背景音乐,只有IE支持,已被 |
| 用于加大字体,已被CSS的font-size属性替代。 |
| 用于实现文本闪烁效果,已被CSS的text-decoration: blink;属性替代。 |
| 用于指定居中文本,已被CSS的text-align: center;属性替代。 |
| 用于指定目录列表,已被 |
| 用于在文档中嵌入应用程序,已被 |
| 用于指定文本字体,大小和颜色,已被CSS的font-family, font-size, color等属性替代。 |
| 用于指定单行输入字段,已被 |
| 用于指定项目列表,已被 |
| 用于创建滚动的内容,已被CSS的animation属性或JavaScript替代。 |
| 用于指定菜单列表,已被 |
| 用于指定明文,已被 |
| 用于指定删除线文本,已被CSS的text-decoration: line-through;属性或HTML5的 |
| 用于指定删除线文本,已被CSS的text-decoration: line-through;属性或HTML5的 |
| 用于指定带下划线的文本,已被CSS的text-decoration: underline;属性或HTML5的 |
| 用于指定预格式化的文本,已被 |
其中,s、u、center、font 标签都在我上次的文章中作了介绍,但没有去严正声明应该去避免使用他们。这会带来兼容性的问题
Editing Toolbar 和一些插件存在的问题

如上,Obsidian Editing Toolbar 默认的字体颜色和背景颜色分别是第三和第四项。可以观察到这里使用了已经废弃的 font 标签。作者的本意可能是想着 font 标签的语法更简单,能避免插入过长 html 产生文本污染。
目前,我个人推荐改为写法二,原因:
- 一是增强通用性,避免在某些博客平台不再生效,避免在某些文档编译系统中报错
- 二是可以和背景同用一个标签和style区域,在同时设置背景和字体颜色的情况下更简洁
(如果你看到了这里,我应该已经去找作者讨论这件事了)
此外,如果你早前使用了大量的 font 标签,我也推荐你使用全局文本搜索和替换去替换他们。(当然,这处理起来很简单,只要搜索替换就可以了,也不急。你可以等到你有需要迁移到其他平台需要时,再去这样做)
HTML 属性的安全性问题
除了对 HTML标签 的支持和兼容性问题外,对 HTML属性 的兼容,也是我们需要考虑的问题
对于个人的笔记软件和自建博客,HTML属性一般都能正常兼容
但是如果要在博客系统/公共平台 (如Github和Vidtor等) 上写 Markdown,很多属性都会被禁止,包括 style
主要原因有两个:安全性和平台一致性 (以下内容来自 gemini 2.5 pro)
- 安全性 (Security) 这是最主要的原因。如果允许用户随意使用
style属性,会带来严重的安全风险:- 跨站脚本攻击 (XSS):
攻击者可以利用 CSS 的某些高级或非标准特性来执行恶意脚本。例如,在一些旧版浏览器中,可以通过style="behavior: url(javascript:...)"来运行脚本。虽然现代浏览器已经修复了大部分此类问题,但开放style标签仍然是一个巨大的攻击面。 - UI 伪装 (UI Redressing):
恶意用户可以利用 CSS 来覆盖或修改页面的原有布局,制造虚假的按钮或链接,诱导其他用户点击,从而窃取信息或执行非预期的操作。想象一下,有人在 issue 评论里把一个“删除仓库”的按钮伪装成一个“查看详情”的链接。 - 信息泄露:
攻击者可以利用background-image: url(...)等属性向自己的服务器发送请求,从而追踪谁在何时何地查看了该页面,泄露用户的 IP 地址等信息。 - 拒绝服务 (DoS):
精心构造的 CSS 可能会导致浏览器渲染引擎崩溃或消耗大量资源,使得其他用户无法正常浏览页面。
- 跨站脚本攻击 (XSS):
- 平台一致性与可读性 (Consistency & Readability)
- GitHub 是一个协作平台,它希望所有的内容(无论是 README、Issue 还是 Pull Request)都保持统一、简洁、易于阅读的风格。
- 如果每个用户都可以自定义字体、颜色、大小和布局,整个网站会变得非常混乱,像一个“杀马特”风格的个人博客。这会严重影响信息的可读性和专业性,降低所有用户的体验。
允许的属性:
为了从根本上杜绝这些风险,平台选择采用“白名单”策略:只允许一小部分已知安全的 HTML 标签(如 <b>, <i>, <img>, <a> 等)和属性(如 href, src),而将 style, script, onclick 等所有可能带来风险的标签和属性全部禁止。
思源问题默认带HTML属性审查,但可以关
思源设置中有个 "允许执行 HTML 块内脚本" 的选项,默认是关的 (默认关闭是对的,不然打开别人的笔记时可能存在风险)。开启后就可以正常属性 style 了
