C# · 12月 31, 2021

c# – 为什么MarkdownSharp编码我的HTML?

在我看来,Markdown的一个更大的目标就是防止用户直接键入潜在的畸形 HTML.

那在MarkdownSharp中并不完全符合我的要求.

当您在“abc”之后立即有额外的换行符时,此示例正常工作…

但是当那个换行不在那里的时候,我认为它仍然是HtmlEncoded,但是这并没有发生

在幕后,渲染的标记来自一个iframe.这是它背后的代码…

<% var md = new MarkdownSharp.Markdown();%><%= md.Transform(Request.Form[0]) %>

当然我一定是错过了一些东西.哦,我正在使用v1.13(这篇文章的最新版本).

编辑(这是StackOverflow实现的测试)

ABC

这不应该是红色的

解决方法 对于那些不想使用Steve Wortham定制解决方案的用户,我已经向MarkdownSharp的用户提交了一个问题和一个提议的修复: http://code.google.com/p/markdownsharp/issues/detail?id=43

如果您下载我附加的Markdown.cs文件,您将找到一个可以设置的新选项.它会停止MarkdownSharp重新编码代码块中的文本.

不要忘记HTML编码您的输入之前,您将它传递到降价,而不是之后.

另一个解决方案是白名单HTML标签,如Stack Overflow.在您将内容传递给降价后,您将会执行此操作.

有关详细信息,请参阅:http://www.CodeTunnel.com/blog/post/24/mardownsharp-and-encoded-html