Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

拒绝 HTML 入库

  最近在做一个数据管理类的东西,发现其中还包含了富文本的编辑需求。以前也做过好多次类似的东西,每次都会有不同的坑,于是这回我直接拒绝了把 HTML 存入数据库,而是把编辑而成而 Markdown 源数据存入,使用时由前端来解析。这样可以把风险降到最低。
  以前每次遇到富文本编辑需求总是会往数据库里写 HTML。不仅入库要做过滤,前端使用时还要再考虑一次过滤。而且 HTML 是很乱的东西,即使过滤掉 SCRIPT 标签,还有 href="Javascript:xxx",以及 IE 特有的 CSS expression 等都存在安全问题。还有一堆我可能都不知道的注入漏洞。一旦后台系统密码泄露,前端可能就会被 XSS。所以我觉得不应该把富文本以 HTML 这种危险的格式入库。
  其实在这么做的时候我还有另一个纠结点。Markdown 到底由前端解析还是由后端解析?一开始本来只向拒绝入库而已,解析依然交给后端。但后来想想如果允许后端直接动态输出 HTML 那也同样存在注入风险。这个风险不单指这个富文本数据,而是我希望所有后端接口都不直接传输 HTML。所以最终决定使用一个第三方库,在前端解析 Markdown。
  比起 HTML,Markdown 就是相对安全的东西,而且它更容易使用。学习成本只是略高于一般的所见即所得编辑器(Markdown 也有所见即所得编辑器可以用)。而且 Markdown 会生成比 HTML 更少的垃圾代码,这是另一个优势。
  另一件很讽刺的事情是我的博客并没用 Markdown 编辑,因为当时装逼自己搞了一套,现在挺后悔的。
网名:
3.80.32.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^