贝利信息

Blazor 怎么安全地渲染 HTML 内容

日期:2025-12-27 00:00 / 作者:月夜之吻
Blazor 中安全渲染 HTML 的关键是仅对完全可信内容使用 MarkupString,对用户输入必须经服务端 HtmlSanitizer 净化后才可渲染,优先采用纯文本、Markdown 或代码高亮等更安全的替代方案。

Blazor 中安全地渲染 HTML 内容,核心是避免直接使用 @((MarkupString)html) 渲染不可信来源的字符串——这会绕过所有 XSS 防护,等同于执行任意脚本。

只对完全可信的内容使用 MarkupString

MarkupString 本身不做过滤或转义,它只是告诉 Blazor “这段字符串已由你(开发者)审核过,可以按 HTML 解析”。所以仅限以下情况使用:

对用户输入内容必须先净化再渲染

来自表单、API、数据库的富文本(如用户评论、编辑器内容),绝不能直接转 MarkupString。推荐在服务端用成熟库净化:

优先考虑非 HTML 方案替代渲染

很多场景其实不需要真正渲染 HTML,更安全的做法是:

禁用危险属性和事件处理(补充防护)

即使用了 HtmlSanitizer,也要确保 Blazor 渲染时不会激活危险行为:

基本上就这些。关键不是“怎么让 MarkupString 更安全”,而是“什么时候不该用 MarkupString”——把净化做在上游,把信任边界划清楚。