2010-07-28 107 views
8

我有一个要求用户创建,修改和删除自己的文章。我计划使用SO用来创建文章的WMD编辑器。降价或HTML

从我可以收集SO存储降价和HTML。它为什么这样做 - 有什么好处?

我无法决定是否存储降价,HTML或两者。如果我存储哪一个我检索并转换为显示给用户。

UPDATE:

好吧,我觉得从到目前为止的答案,我应该都存储在降价和HTML。这似乎很酷。我也一直在阅读杰夫关于XSS漏洞的博客文章。由于WMD编辑器允许您输入任何HTML,这可能会导致我一些头痛。

问题中的博文是here。我猜测我必须遵循与SO相同的方法 - 并在服务器端消毒输入。

是这样的使用可作为开源代码的sanitize或将我从头开始呢?

任何帮助将不胜感激。

感谢

回答

8

都存储在性能和兼容性(最终也是社会控制)方面非常有用/有帮助。

如果您仅存储 Markdown(或任何非HTML标记),那么每次将其解析为HTML风格都会带来性能成本。这并不总是显而易见的便宜。

如果您只存储仅限于HTML,那么您将面临错误在生成的HTML中无声无息地蔓延的风险。这将导致大量的维护和修复头痛。你也将失去社会的控制,因为你不知道了什么用户拥有实际上填写。你最好例如为管理员也想知道哪些用户正在尝试使用<script>等做XSS。另外,最终用户将无法以Markdown格式编辑数据。您需要将其从HTML转换回来。

要更新的版本降价每一个变化的HTML,你只需要添加代表降价的版本一个额外的字段被用于生成HTML输出。只要在检索行的时候在服务器端进行了更改,就可以使用新版本重新解析数据并更新数据库中的行。这只是一次性额外费用。

+1

的唯一存储HTML另一个风险是,如果你需要编辑你不需要依赖于从HTML回1对1转换到降价 – neolaser 2014-07-22 01:23:56

+0

@ neo的:*“此外,终端用户将无法以Markdown格式编辑数据,您需要将其从HTML转换回来。“* – BalusC 2014-07-22 04:42:39

6

通过存储两个你只需要处理一次降价(当它被公布)。然后,您将检索HTML,以便更快地加载页面。

0

如果您只存储一个,你永远必须重新创建其他的要么显示视图或编辑视图。