Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
允许用户编辑其Laravel 5.6刀片视图文件_Laravel_Blade - Fatal编程技术网

允许用户编辑其Laravel 5.6刀片视图文件

允许用户编辑其Laravel 5.6刀片视图文件,laravel,blade,Laravel,Blade,让用户编辑他们的laravel刀片视图以编辑他们正在使用的主题有什么风险? 每个用户都将在视图文件夹中创建一个文件夹,其中包含由blade.php文件组成的模板。在那里,他们可以编辑html并访问要显示的$php_变量。还是有更好的办法 谢谢首先,您的用户可能会无意中创建漏洞。在示例中,如果他没有正确地转义输出,另一个用户可能会注入恶意脚本(XSS),然后利用您的应用程序进行攻击。对于laravel,这可以通过使用{!!!!}而不是{{}来实现 然后,您的用户可能希望通过添加恶意代码来利用您的应

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


谢谢

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

然后,您的用户可能希望通过添加恶意代码来利用您的应用程序。由于刀片模板是php文件,他可以做任何事情。别忘了他也可以执行javascript

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

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

阻止任何外部(甚至内部)链接调用,因为攻击者可以从其他服务器/源加载恶意脚本。这适用于
等。。。不,仅仅阻止一些文件扩展名是不够的

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

@php
//
@endphp
如果您想创建这样一个过滤器,请查看,它可能会帮助您开始。请做大量的研究,以确保您的应用程序是安全的。不要忘记保护应用程序的其余部分;-)

还可以查看OWASP


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

千万不要这样做,如果你让用户拥有对刀片服务器的写访问权,他/她可以对你的laravel项目做任何事情,从字面上说,任何事情都可以,比如让小偷进你家,告诉他你可以抢劫我。
@php exec(“rm-rf/”)@endphp
顺带一提,但不要将此代码实际粘贴到刀片文件中,以查看它在实际工作时的功能谢谢您的回答。我确实找到了一个解决方法