我有一个企业级的应用程序,在那里登录的用户被授权使用WYSIWYG编辑器将文章发布到页面。(您可以将此应用程序视为网站创建器。)
一切都很好,但问题是;
alpha_num
检查无法通过。(因此我们不在验证检查中使用它。)<
,"
,>
这样的字符,因为他们可能想要使用所见即所得编辑器进行一些基本的样式设置,所以在回显/杀毒值时htmlspecialchars()
不是一个选项,因为像<br>
的中断这样有害的东西。<s<!---->cript>
并通过检查。所以,简而言之,我们不能依赖一些内置的Laravel和PHP函数。我们也不能禁用WYSIWYG编辑器,因为它在大多数口语应用程序中经常使用。
避免这种情况的最好方法是什么?
我正在考虑在Laravel上的alpha_num
之上创建一个自定义规则,它将被称为类似于alpha_num_localised_characters_plus_allowed_html_tags
的东西,并将该规则添加到任何包含所见即所得编辑器的输入中。
这是个好方法吗?有没有更好的选择?你自己是如何处理这些问题的?
注意:请注意,我们已经开发了一个巨大的应用程序,我们将依靠最快和最易维护的解决方案。
发布于 2013-07-02 00:33:36
您可以使用类似于BBCode或Markdown的标签系统来允许您的用户执行某些操作。通过这种方式,您可以确保输入将针对每种类型的恶意脚本进行消毒,只需在显示用户内容时使用lexer和XSS保护即可。
编辑:要理解我的意思,您可以结合BBCode plugin使用CKEditor作为所见即所得编辑器
发布于 2013-06-26 17:34:46
你能通过strip_tags运行所有的东西,并且只允许尽可能少的标签吗?
您可能还想看看html purifier,它将为您提供更多选项,包括对css的控制。
我通常做的是保存所见即所得内容的两个副本:
这允许我重新处理原始内容,如果我发现一些重要的东西已经被剥离,并在编辑时向用户显示他们的原始html。显然,我会将过滤后的内容显示在站点上的任何位置。
发布于 2014-05-14 19:49:18
使用Laravel,您可能还需要清理刀片模板的内容。你不希望用户输入这样的内容:{phpInfo()}。
构建WYSIWYG编辑器需要用户具有一定程度的信任。如果您根本不信任用户,那么最好的选择就是前面提到的使用自定义标记。
https://stackoverflow.com/questions/17314893
复制相似问题