Markdown 使用自定义WMD编辑器标记为HTML

Markdown 使用自定义WMD编辑器标记为HTML,markdown,wmd,Markdown,Wmd,对于我的应用程序,我稍微自定义了WMD的行为方式,因此当用户输入空行时,这些空行将作为的反映在HTML输出中。现在我到了一个点,我应该把它存储在后端的某个地方,所以在浏览so帖子一段时间后,我不确定什么是最好的方法。我几乎没有选择,如果你能指出他们的优点/缺点,我将不胜感激 发送到服务器并以降价而不是HTML的形式存储。对我来说,明显的优势是保持和用户最初输入的格式完全相同。但是,如何将其转换回HTML以显示给客户端? 在客户端转换它似乎很麻烦,因为即使有可能,如果禁用JS会发生什么?如果我想在

对于我的应用程序,我稍微自定义了WMD的行为方式,因此当用户输入空行时,这些空行将作为

反映在HTML输出中。现在我到了一个点,我应该把它存储在后端的某个地方,所以在浏览so帖子一段时间后,我不确定什么是最好的方法。我几乎没有选择,如果你能指出他们的优点/缺点,我将不胜感激

  • 发送到服务器并以降价而不是HTML的形式存储。对我来说,明显的优势是保持和用户最初输入的格式完全相同。但是,如何将其转换回HTML以显示给客户端? 在客户端转换它似乎很麻烦,因为即使有可能,如果禁用JS会发生什么?如果我想在服务器上实现,那么将标记转换为HTML的标准服务器端实现可能会耗费大量资源。你认为这是一个问题吗?即使情况并非如此,正如我提到的,我的大规模杀伤性武器实施是定制的,而且这些服务器端解决方案可能不会正确地转换为降价,而且总是存在转换错误的风险

  • 以转换后的HTML格式发送到服务器。同上。。客户机端的转换将很困难,服务器端的转换也可能出错

  • 发送原始标记和转换后的HTML,并同时存储。在客户端和服务器端,都没有与将标记转换为HTML相关的性能问题。用户将始终使用他们最初输入的相同标记和他们最初在预览中看到的相同HTML(不过可能在php中进行了净化)。不过,这将需要两倍的存储空间,这是我最大的担忧

  • 我倾向于第三个解决方案,因为它看起来很简单,但有一个担心,这个解决方案需要加倍的存储空间。请记住,我对WMD的实现做了一些修改,并且我将使用PHP/MySql服务器端实现

    所以,除了我上面列出的3个选项外,还有其他可能的解决方案吗?我是否错过了任何重要的东西,使上述选项中的一个比其他选项更好?对于我列出的每个解决方案,还有哪些其他优点/缺点?它是如何在SO上实现的?我读到一些他们使用选项3的地方,所以如果它足够好,那么对我来说也足够好:)但不确定它是否正确,那么它是如何做到的

    也请原谅我,但至少有一次,我不得不说StackOverflow是网络上最好的该死的资源,我真的很感激所有在这里帮助别人的人!这里的网站和用户简直太棒了

    以标记或转换的HTML格式发送到服务器

    从客户端接受标记而不是HTML的一个原因是,从客户端接受任意HTML会带来安全风险:如果您接受HTML,则客户端可能会向您发送带有恶意代码的HTML,您会将其存储并反馈(可能会反馈给另一个客户端:因此您最终会向另一个客户端发送恶意代码)。因此,最好只接受来自客户端的标记(而不是HTML)

    如果我想在服务器上实现,那么将标记转换为HTML的标准服务器端实现可能会耗费大量资源。你认为这是一个问题吗


    我不知道“标准服务器端实现”是什么,但我猜这(生成HTML)是服务器应该能够完成的处理方式。

    第四种。选项是存储标记,并在请求时使用服务器端库将标记呈现为HTML,然后使用缓存防止性能受损

    ChrisW对安全问题的评论——这是一个非常有效的观点,可以让你自己去关注对输入的净化。但是,也不要错误地认为降价是安全的。从我所看到的WMD和它的shodown.js处理器来看,你仍然可以向它输入HTML,它会把它留在那里。因此,使用WMD编辑器的人仍然可以在
    或其他任何地方进行渲染

    实际上,谈到这一点,我觉得我需要检查一下当前的实现情况。

    所谓“标准服务器端实现”,我指的是在服务器端将HTML转换为标记的公共库,比如PHP标记