让用户编辑他们的 Laravel 5.6 blade 查看文件

Let users edit their Laravel 5.6 blade view files

让用户编辑他们的 laravel blade 视图以编辑他们正在使用的主题有什么风险? 每个用户都将在 views 文件夹中为他们创建一个文件夹,其中包含由 blade.php 个文件组成的模板。他们可以在那里编辑 html 并访问要显示的 $php_variables。或者有更好的方法吗?

谢谢

首先,您的用户存在无意中创建漏洞的风险。例如,如果他没有正确转义输出,则另一个用户可能会注入恶意脚本 (XSS),然后利用您的应用程序。对于 laravel,这可以通过使用 {!! !!} 而不是 {{ }}。

然后存在您的用户想要通过添加恶意代码来利用您的应用程序的风险。由于 blade 模板是 php 文件,他可以做任何事情。别忘了他也可以执行 javascript。

在不知道更多的情况下,很难找到更好的解决方案。根据您的应用程序应该做什么,您应该调整安全性。

为了最大的安全性,我会过滤提交的内容并删除所有 javascript 和 php,{{}} 除外。对于 {{}},检查里面的变量是否被允许(创建一个包含允许变量的列表)。还要确保他不能执行 {{}} 内的任何其他代码。

阻止任何外部(甚至可能是内部)link 调用,因为攻击者可以从另一个 server/source 加载恶意脚本。这适用于 <img>, <link> 等......不,仅仅阻止某些文件扩展名是不够的。

请阅读 blade doc 并确保阻止任何其他代码执行方式,即

@php
//
@endphp

如果你想创建这样的过滤器,请查看 this link,也许它会帮助你开始。请做大量研究以确保您的应用程序是安全的。并且不要忘记保护您应用程序的其余部分;-)

另请查看 OWASP PHP Security Cheat Sheet

编辑:当然还有其他几种方法可以处理这个问题。您可以自己查看每个模板(如果用户有限),您可以让用户在多个模板之间进行选择(无编辑),您可以阻止所有 php&javascript 并使用 "shortcodes"然后将其替换为受控的 php 代码(基本上是您自己的模板引擎)等