【问题标题】:markdown to HTML with customised WMD editor使用定制的 WMD 编辑器将降价到 HTML
【发布时间】:2010-12-23 11:48:41
【问题描述】:

对于我的应用程序,我稍微定制了 WMD 的行为方式,因此当用户输入空行时,这些在 HTML 输出中反映为 <br />'s。现在我到了应该将它存储在后端某个地方的地步,所以在浏览 SO 帖子一段时间后,我不确定什么是最好的方法。我有几个选择,如果你能指出他们的优点/缺点,那将不胜感激。

  1. 发送到服务器并存储为 Markdown 而不是 HTML。对我来说,明显的优势是保持与用户最初输入的格式完全相同。但是,我怎样才能将它转换回 HTML 以显示给客户端呢? 在客户端转换它似乎很麻烦,即使如果禁用 JS 可能会发生什么?如果我想在服务器上执行此操作,那么 HTML 标记的标准服务器端实现可能会耗费大量资源。你认为这会是一个问题吗?即使情况并非如此,正如我提到的那样,我的 WMD 实现是定制的,并且这些服务器端解决方案可能无法正确转换为 markdown,并且总是存在转换错误的风险。

  2. 作为转换后的 HTML 发送到服务器。同上..客户端的转换会很困难,服务器端的转换可能会出错。

  3. 发送原始降价和转换后的 HTML 并存储两者。在客户端和服务器端都没有与将 Markdown 转换为 HTML 相关的性能问题。用户将始终拥有他们最初输入的相同降价和最初在预览中看到的相同 HTML(尽管可能在 php 中进行了清理)。不过,它必须占用两倍的存储空间,这是我最大的担忧。

我倾向于倾向于第三种解决方案,因为它看起来最简单,但担心此解决方案需要双倍的存储空间。请记住,我的 WMD 实现略有修改,而且我将使用 PHP/MySql 服务器端实现。

所以除了我上面列出的 3 个选项之外,我的问题还有其他可能的解决方案吗?我是否错过了任何重要的事情,可以使上述选项之一比其他选项更好?我列出的每个解决方案还有哪些其他优点/缺点?还有它是如何在 SO 上实现的?我在某处读到他们使用选项 3,所以如果它对 SO 来说足够好,对我来说就足够好了:) 但不确定它是否是真的,那么它是如何完成的?

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

【问题讨论】:

    标签: markdown wmd


    【解决方案1】:

    以 Markdown 或转换后的 HTML 形式发送到服务器

    接受来自客户端的 Markdown 而不是 HTML 的一个原因是,接受来自客户端的任意 HTML 存在安全风险:如果您接受 HTML,那么客户端可能会向您发送带有恶意代码的 HTML,您将存储这些代码然后提供返回(可能发送到另一个客户端:因此您最终将恶意代码发送到另一个客户端)。因此,最好只接受来自客户端的 markdown(而不是 HTML)。

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

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

    【讨论】:

    【解决方案2】:

    第四个。选项是存储 markdown,并在请求时使用服务器端库将 markdown 呈现为 HTML,然后使用缓存来防止性能下降。

    来自 ChrisW 的关于安全问题的评论——这是一个非常有效的观点,让您自己关注对输入的清理。但是,也不要错误地认为降价是安全的。从我看到的 WMD 和它的 showdown.js 处理器来看,你仍然可以给它提供 HTML,它会把它留在那里。因此,使用 WMD 编辑器的人仍有可能以<script> 或其他方式结束。

    实际上谈论这个让我觉得我需要检查我当前的实现..

    【讨论】:

      猜你喜欢
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-14
      • 2011-01-06
      • 2010-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多