我要求用户创建,修改和删除自己的文章。我打算使用SO用来创建文章的WMD编辑器。
从我可以收集的内容中,可以存储降价和HTML。为什么这样做 - 有什么好处?
我无法决定是否存储降价,HTML或两者。如果我存储哪一个,我将检索并转换为显示给用户。
更新:
好的,我想从目前为止的答案来看,我应该同时存储markdown和HTML。这看起来很酷。我也一直在阅读Jeff关于XSS漏洞的博客文章。因为WMD编辑器允许您输入任何HTML,这可能会让我感到头疼。
有问题的博文是here。我猜我将不得不采用与SO相同的方法 - 并清理服务器端的输入。
SO使用的清理代码是否可用作开源代码,还是我必须从头开始?
非常感谢任何帮助。
由于
答案 0 :(得分:8)
在性能和兼容性方面(最终还有社交控制),存储两者都非常有用/有用。
如果您只存储 Markdown(或任何非HTML标记),那么每次将其解析为HTML风格都会产生性能成本。这并不总是明显便宜。
如果您只存储 HTML,那么您将冒险在生成的HTML中隐藏蠕虫。这将导致大量的维护和错误修复头痛。您也将失去社交控制权,因为您不再知道用户实际上填写的内容。例如,您是管理员也想知道哪些用户正在尝试使用XSS <script>
等等。此外,最终用户将无法以Markdown格式编辑数据。您需要将其从HTML转换回来。
要在Markdown版本的每次更改时更新HTML,您只需添加一个额外字段,表示用于生成HTML输出的Markdown版本。只要在检索行时在服务器端更改了此项,请使用新版本重新解析数据并更新数据库中的行。这只是一次性的额外费用。
答案 1 :(得分:6)
通过存储两者,您只需处理降价一次(当它被发布时)。然后,您将检索HTML,以便更快地加载页面。
答案 2 :(得分:0)
如果您只存储了一个,则必须为显示视图或编辑视图重新创建另一个。