ホームページ >バックエンド開発 >PHPチュートリアル >javascript - 大公司是怎么做富文本编辑器过滤方案的?

javascript - 大公司是怎么做富文本编辑器过滤方案的?

WBOY
WBOYオリジナル
2016-06-06 20:41:101117ブラウズ

我看到了sf上有类似的问题,但是解决不了我心中的疑问,所以我在这儿说一下我的情况。
目前我正在做一个富文本编辑器的解决方案,不仅仅是考虑前端,还包括后端的过滤处理。

一般的富文本编辑器在前端是会有一定的过滤的,但众所周知在前端做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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。