使用 MarkupString 在 Blazor 页面内渲染 html 有哪些合法风险?
此 Blazor 0.5.0 预览博客文章中提到了一个警告。
但是,我还看到了其他一些 Stackoverflow 帖子,其中用户尝试在 MarkupString(片段/对象?)内执行 JavaScript/C# 并解释说这是不可能的。
例如。 如何在 Blazor 中渲染包含 script 标签的 html
还有... Blazor:如何在 MarkupString 中使用 onclick 事件
我无法找到有关 MarkupString 的良好文档来确定它是否是良性的。
在我的用例中,一些开发人员可能会编辑在发布过程之外呈现的 html 片段,因此风险很小。
谢谢!
我不是安全专家,但我可以想到一个简单的例子。 您提到的警告是关于来自不受信任的来源的标记。 例如,某人可以将用户重定向到他的网络钓鱼网站。
@page "/"
<PageTitle>Home</PageTitle>
<h1>Dynamic HTML Content Example</h1>
<div>@HtmlContent</div>
@code {
private MarkupString HtmlContent;
protected override void OnInitialized()
{
var html = "<p style='color: blue;'>a <a href='https://www.google.com' target='_blank'>link some site</a>.</p>";
HtmlContent = new MarkupString(html);
}
}