javascript - 大公司是怎么做富文本编辑器过滤方案的?
目前我正在做一个富文本编辑器的解决方案,不仅仅是考虑前端,还包括后端的过滤处理。
一般的富文本编辑器在前端是会有一定的过滤的,但众所周知在前端做XSS攻击的过滤肯定是不充分的,这很容易被绕过。
目前的解决方案
- 前端:使用CKEditor的BBCode插件,用户输入的内容都是BBCode的。
- 后端(PHP):将剩下还存在的html标签转译掉
目前解决方案的问题
如果用户直接从别的地方粘贴一段内容放到CKEditor的富文本编辑器中(在使用BBCode插件的状态下),会发现格式全都乱掉。这是因为BBCode本身的表现力肯定不如HTML,而且这个BBCode的插件也是有bug的。
请问一般成熟的企业是怎么做的?
- 百姓网是没有富文本编辑的
- 百度贴吧感觉上也不是存HTML的。
那像淘宝店铺、或者微信公众平台的编辑器。他们会通过一大堆复杂的过滤条件然后直接把过滤完的HTML存到数据库里吗?还是转成其他的格式保存?
补充一下:
我找到一个HTML Purifier
的PHP库,我不知道是否适合我的应用场景,它会不会太重了?有了解这个库的朋友的话,希望告知一下。
回复内容:
我看到了sf上有类似的问题,但是解决不了我心中的疑问,所以我在这儿说一下我的情况。
目前我正在做一个富文本编辑器的解决方案,不仅仅是考虑前端,还包括后端的过滤处理。
一般的富文本编辑器在前端是会有一定的过滤的,但众所周知在前端做XSS攻击的过滤肯定是不充分的,这很容易被绕过。
目前的解决方案
- 前端:使用CKEditor的BBCode插件,用户输入的内容都是BBCode的。
- 后端(PHP):将剩下还存在的html标签转译掉
目前解决方案的问题
如果用户直接从别的地方粘贴一段内容放到CKEditor的富文本编辑器中(在使用BBCode插件的状态下),会发现格式全都乱掉。这是因为BBCode本身的表现力肯定不如HTML,而且这个BBCode的插件也是有bug的。
请问一般成熟的企业是怎么做的?
- 百姓网是没有富文本编辑的
- 百度贴吧感觉上也不是存HTML的。
那像淘宝店铺、或者微信公众平台的编辑器。他们会通过一大堆复杂的过滤条件然后直接把过滤完的HTML存到数据库里吗?还是转成其他的格式保存?
补充一下:
我找到一个HTML Purifier
的PHP库,我不知道是否适合我的应用场景,它会不会太重了?有了解这个库的朋友的话,希望告知一下。
百度使用的是自家研制的UEditor
HTML Purifier可以的。
补充一下吧,上午答的有点草率。
HTML Purifier的确是可以用,但是的确如楼主所说,性能是个问题。
各个公司都有各自的解决方案,坊间虽然有很多过滤xss的方法,但是没那个是完全适合的。
其实如果是PHP的话,本身语言就有很好的函数可以用了, strip_tags,然后设定allowable_tags
下一篇: php 运算符请问