让用户编辑他们的laravel刀片视图以便他们编辑他们正在使用的主题有什么风险? 每个用户都将在views文件夹中为他们创建一个文件夹,其中包含由blade.php文件组成的模板。在那里,他们可以编辑html并访问$ php_variables进行显示。或者有更好的方法吗?
由于
答案 0 :(得分:0)
首先,您的用户可能会无意中创建漏洞。例如,如果他没有正确地转义输出,则另一个用户可以注入恶意脚本(XSS)然后利用您的应用程序。对于laravel,这可能通过使用{!! !!}而不是{{}}。
然后,您的用户可能希望通过添加恶意代码来自行利用您的应用程序。由于刀片模板是php文件,他可以做任何事情。并且不要忘记他也可以执行javascript。
在不知情的情况下,很难找到更好的解决方案。根据您的应用程序应该执行的操作,您应该调整安全性。
为了最大安全性,我会过滤提交的内容并删除所有javascript和php,{{}}除外。对于{{}},检查是否允许内部变量(使用允许变量创建列表)。还要确保他不能在{{}}内执行任何其他代码。
阻止任何外部(甚至内部)链接调用,因为攻击者可能从其他服务器/源加载恶意脚本。这适用于<img>, <link>
等等......不,仅仅阻止某些文件扩展名是不够的。
请阅读blade doc并确保阻止任何其他代码执行方式,即
@php
//
@endphp
如果您想创建这样的过滤器,请查看this link,也许它可以帮助您启动。请做大量的研究,以确保您的应用程序是安全的。并且不要忘记确保你的其他人申请; - )
另请查看OWASP PHP Security Cheat Sheet
编辑:当然还有其他几种方法可以解决这个问题。您可以自己查看每个模板(如果用户有限),您可以让用户在多个模板之间进行选择(无需编辑),您可以阻止所有php&amp; javascript并使用&#34;短代码&#34;然后由您的受控PHP代码(基本上是您自己的模板引擎)等替换。