首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何允许WYSIWYG编辑器并使用Laravel禁用XSS攻击?

如何允许WYSIWYG编辑器并使用Laravel禁用XSS攻击?
EN

Stack Overflow用户
提问于 2013-06-26 16:15:26
回答 5查看 7.6K关注 0票数 8

我有一个企业级的应用程序,在那里登录的用户被授权使用WYSIWYG编辑器将文章发布到页面。(您可以将此应用程序视为网站创建器。)

一切都很好,但问题是;

  1. 所见即所得编辑器发布了一篇包含文章的超文本标记语言,还有一些Laravel不喜欢的本地化字符串字符,因此Laravel的alpha_num检查无法通过。(因此我们不在验证检查中使用它。)
  2. 我们需要允许像<">这样的字符,因为他们可能想要使用所见即所得编辑器进行一些基本的样式设置,所以在回显/杀毒值时htmlspecialchars()不是一个选项,因为像<br>的中断这样有害的东西。
  3. 用户能够发布像<代码>D12或<代码>D13这样的内容,我知道这是一个巨大的安全风险,但我们不能真正清理/转义任何东西。用户仍然可以编写<s<!---->cript>并通过检查。

所以,简而言之,我们不能依赖一些内置的Laravel和PHP函数。我们也不能禁用WYSIWYG编辑器,因为它在大多数口语应用程序中经常使用。

避免这种情况的最好方法是什么?

我正在考虑在Laravel上的alpha_num之上创建一个自定义规则,它将被称为类似于alpha_num_localised_characters_plus_allowed_html_tags的东西,并将该规则添加到任何包含所见即所得编辑器的输入中。

这是个好方法吗?有没有更好的选择?你自己是如何处理这些问题的?

注意:请注意,我们已经开发了一个巨大的应用程序,我们将依靠最快和最易维护的解决方案。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-07-02 00:33:36

您可以使用类似于BBCode或Markdown的标签系统来允许您的用户执行某些操作。通过这种方式,您可以确保输入将针对每种类型的恶意脚本进行消毒,只需在显示用户内容时使用lexer和XSS保护即可。

编辑:要理解我的意思,您可以结合BBCode plugin使用CKEditor作为所见即所得编辑器

票数 2
EN

Stack Overflow用户

发布于 2013-06-26 17:34:46

你能通过strip_tags运行所有的东西,并且只允许尽可能少的标签吗?

您可能还想看看html purifier,它将为您提供更多选项,包括对css的控制。

我通常做的是保存所见即所得内容的两个副本:

  1. the original unfiltered
  2. filtered

这允许我重新处理原始内容,如果我发现一些重要的东西已经被剥离,并在编辑时向用户显示他们的原始html。显然,我会将过滤后的内容显示在站点上的任何位置。

票数 3
EN

Stack Overflow用户

发布于 2014-05-14 19:49:18

使用Laravel,您可能还需要清理刀片模板的内容。你不希望用户输入这样的内容:{phpInfo()}。

构建WYSIWYG编辑器需要用户具有一定程度的信任。如果您根本不信任用户,那么最好的选择就是前面提到的使用自定义标记。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17314893

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档