我有一个企业级应用程序,其中登录用户被授权使用所见即所得编辑器将文章发布到页面。(您可以将此应用程序视为网站构建器。)
一切正常,但问题是;
所见即所得的编辑器发布了一篇包含 HTML 的文章,还有一些 Laravel 不喜欢的本地化字符串字符,因此 Laravel 的
alpha_num
检查无法通过。(因此我们不在验证检查中使用它。)我们需要允许 , 之类的字符,
<
因为他们可能想使用 WYSIWYG 编辑器做一些基本的样式设置,所以在回显/清理值时不是一个选项,因为像's break 这样有害的东西。"
>
htmlspecialchars()
<br>
用户可以发布类似的东西,
<script type="text/javascript>alert('Hello');</script>
或者</div></div></div><div style="width: 100%, height: 100% z-index: 999999">
这是一个巨大的安全风险,我知道,但我们不能真正清理/逃避任何东西。用户仍然可以编写<s<!---->cript>
并通过检查。
所以,简而言之,我们不能依赖一些内置的 Laravel 和 PHP 函数。我们也不能禁用 WYSIWYG 编辑器,因为它经常用于口语应用的大部分领域。
避免这种情况的最佳方法是什么?
我正在考虑alpha_num
在 Laravel 之上创建一个自定义规则,这将被称为类似alpha_num_localised_characters_plus_allowed_html_tags
并将该规则添加到任何包含所见即所得编辑器的输入中。
这是一个好方法吗?有没有更好的选择?你自己如何处理这些问题?
注意:请注意我们已经开发了一个巨大的应用程序,我们将依赖最快和最可维护的解决方案。