2009-12-05 69 views
1

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

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

  2. 以转换后的HTML形式发送到服务器。与上述相同,客户端的转换将会很困难,服务器端可能会发生错误。

  3. 发送原始降价并转换HTML并存储两者。没有性能问题与在客户端将标记转换为HTML相关,也不在服务器端。用户将始终使用相同的降价,他们最初输入的和他们最初在预览中看到的相同的HTML(尽管可能在php中进行了消毒处理)。它将不得不占用两倍的存储空间,这是我最担心的。

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

因此除了上面列出的3个选项外,还有其他解决方案可以解决我的问题吗?我错过了什么重要的事情,会使其中一个选项更好,其余的更好?还有哪些优点/缺点适用于我列出的每个解决方案?又如何在SO上实现?我读过somwhere,他们使用了选项3,所以如果它足够好,对我来说就足够了:)但不知道它的真实性如何,那么它是如何完成的?

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

回答

2

发送到服务器降价或转换的HTML

从客户端接受降价,而不是HTML的一个原因是,接受任意的HTML从客户端是一种安全风险:如果你接受HTML然后客户可能会向您发送带有恶意代码的HTML,您将存储该恶意代码,然后反馈(也许发送给其他客户端:因此最终会将恶意代码发送给其他客户端)。出于这个原因,最好只接受来自客户端的降价(不是HTML)。

如果我想在服务器上做到这一点,那么标准的HTML标记服务器端实现可能是资源昂贵的。你认为这会是一个问题吗?

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

+1

通过“标准服务器端实现”我的意思是公共库转换HTML到降价在服务器端,如PHP降价的http:/ /michelf.com/projects/php-markdown – spirytus 2009-12-05 04:17:10

0

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

ChrisW对安全问题的评论 - 这是一个真正有效的关注消除这种输入的关注点。但是,不要认为减价是安全的错误。从我看到的WMD和它的showdown.js处理器,你仍然可以喂它的HTML,它会留在那里。所以对于使用WMD编辑器的人来说,仍然有可能在<script>或其他任何地方进入。

实际上是在谈论这让我觉得我需要检查我目前执行的这个..