c# - 渲染作为 Markdown 上传并将服务器端转换为 Html 的 Html 是否安全?

标签 c# asp.net-mvc markdown html-encode

我有一个网络表单,允许用户将文本上传为 Markdown。

Markdown 在服务器上转换为 Html(使用 Markdig)并存储。

当显示用户上传的转换后的 Html 时,我是否应该对内容进行 @Html.Encode - 该项目使用 c#,MVC 5/razor 并启用了请求验证。

最佳答案

一般要看markdown转换器。

默认情况下 Markdig 不会转义 html。但是,您可以在管道中使用 DisableHtml 函数来转义之前扩展未处理的所有剩余 HTML 可编码字符串。这也应该比让反 xss 函数再次运行字符串提供更好的性能。

看例子:

var pipeline = new MarkdownPipelineBuilder().DisableHtml().Build();
var result = Markdig.Markdown.ToHtml("<a href='javascript:evil()'>hello</a>", pipeline);

关于c# - 渲染作为 Markdown 上传并将服务器端转换为 Html 的 Html 是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43090491/

相关文章:

c# - 需要在 C# 应用程序中以管理员身份运行

c# - D2DERR_RECREATE_TARGET 错误是否真的意味着我必须跟踪渲染目标创建的所有内容?

c# - 加载一对多模型

css - 如何将媒体属性添加到 ASP.NET MVC4 样式包

html - 如何摆脱 Markdown 中的表格边框?

RMarkdown Officedown : Insert two images side by side to word document with captions

c# - 如何在 c# Selenium 中查找 reCAPTCHA 元素并单击它

c# - 为什么禁用的按钮可以点击?

asp.net-mvc - 接受逗号和点作为小数分隔符

github - 如何在 github markdown 中嵌入来自 repo 的代码?