首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与PageDown一起使用时,MarkDownSharp的用途是什么?

与PageDown一起使用时,MarkDownSharp的用途是什么?
EN

Stack Overflow用户
提问于 2012-03-15 17:56:18
回答 1查看 1.2K关注 0票数 11

StackExchange站点使用MarkDown语法编写问题和答案。这是在客户端使用PageDown,在服务器端使用MarkDownSharpJeff's HTML sanitizer构建的。我正在考虑自己构建一个非常类似的东西。

我理解为什么我需要清理服务器端的HTML。但是MarkDownSharp的用途是什么呢?为什么我不能在客户端用PageDown完成MarkDown到HTML语言的转换,然后发送给服务器呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-15 18:28:50

最重要的原因是:

  1. 我们希望堆栈交换站点的最基本(在“基础”的意义上)功能,询问和回答,在没有JavaScript的情况下工作。大多数高级功能,如投票、标记、UI细节、帮助文本、收藏、全局收件箱等等都需要JavaScript,这没问题。但网站离不开的一件事--问答--不应该有这样的要求,那就是尽可能地保持低摩擦。

当然,当你没有JavaScript作为需求的时候,你不能要求客户端呈现Markdown。

  • 我们只存储最近版本的文章的呈现的超文本标记语言版本。对于过去的修订,我们只存储Markdown源代码。为每次编辑都存储两个版本将是一种巨大的空间浪费,因为几乎不需要旧版本。但有时它们是需要的,例如在修订历史中。因此,我们无论如何都要在服务器端渲染。

  • 即使你在服务器端重新消毒,允许客户端进行渲染显然会消除你对渲染版本的信任,这些信任是真正从Markdown中生成的。想象一下:

我,一个邪恶的垃圾邮件发送者,发布以下答案:

因为你可以在这个很棒的网站上出海...(LOGO中海龟的线程安全用法的长文本) ...希望这能有所帮助!1:http://almost-real-rolex-watches.biz

但我提交了一个渲染版本,其中的链接实际上指向一个关于turtle并发的错综复杂的相关站点。因为服务器需要来自我的Markdown源代码和呈现的HTML,所以它相信其中一个是由另一个生成的。

随之而来的是Sean Sceat,著名的Stack Overflow用户,仅在徽标标签上就有12万的声誉。他看到链接确实转到了一个相关的页面,点赞了答案,并发布了一个“很棒的答案;你链接的网站有大量有用的内容!”注释后,他修复了拼写错误"sea“-> "see”(垃圾邮件发送者故意这样做)。

但在他点击“编辑”之后,编辑器中的Markdown不再包含相关链接;它包含Rolex链接。因此,在Sean不知情的情况下,他不仅修复了打字错误,还更改了链接,转到垃圾邮件发送者的网站。

现在你有了一篇帖子,最后的编辑来自一个受信任的用户,认可了答案,但带有一个我们不希望人们点击的链接。

和修订历史(参见第2点),甚至不会显示链接已更改。

应该注意的是,WMD编辑器的原始版本实际上具有您所描述的功能;您可以将其设置为将呈现的JavaScript提交到服务器。当我们以"PageDown“的名字发布我们的重构版本时,我们最终删除了这个功能,因为我们从来没有使用过它,维护过它,老实说,我不知道它是否还能工作。

票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9717403

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档