如何防止访问laravel刀片中的数据库和资源?
Posted
技术标签:
【中文标题】如何防止访问laravel刀片中的数据库和资源?【英文标题】:how to prevent access database and resources in laravel blade? 【发布时间】:2020-11-30 13:45:20 【问题描述】:我想创建一个商店构建器,用户可以创建自己的主题并将其上传到我的主机。现在我想防止用户无法访问刀片中的数据库和模型和资源。
因为他们可以通过我服务器上的刀片编写恶意代码并导致系统崩溃。
我只想为每个刀片的页面发送一个变量列表,其中包含他们在此页面上所需的值,用户只能使用这些变量,不能访问我的服务器数据库或资源和我的文件服务器。 我必须防止用户无法访问刀片中的数据库
有人对此有想法吗?
谢谢
【问题讨论】:
如果你在视图渲染之前得到所有数据,也许关闭数据库连接会做你想做的事DB::disconnect('foo');
laravel.com/docs/4.2/database#accessing-connections
您的问题是 stricte 基于意见的,不符合 *** 的要求。恐怕它很快就会关闭。
如果我收到信息后断开数据库。用户不能通过blade和php重新连接吗?
blade 可以包含 PHP 块,所以你不会限制任何东西......也许像 Twig 这样带有沙盒的东西可能会起作用
【参考方案1】:
我也有和你类似的需求
经过多次实验和尝试,我找到了一个可行的解决方案, 但有限制/限制
“从我的角度来看”考虑引入另一种呈现内容的方式是合适的。
根据我的研究,我找到了 2 个可能的解决方案
介绍liquid 专业版 无法访问代码 反对 必须提前处理所有可访问的内容 介绍TWIG 专业版 您没有默认访问 eloquent 或其他任何未传递给它的权限 您可以传递一个旨在作为 php 类及其所有方法和属性的“对象” 反对 仅仅因为您可以传递“对象”,您可能会遇到不愉快的情况,即对象带来了视图不应访问的东西结论
总之,“我的”选择是流动的,因为它保证了我更多的安全性,此外其他公司(如 shopify)也决定使用它来实现这一特性
【讨论】:
以上是关于如何防止访问laravel刀片中的数据库和资源?的主要内容,如果未能解决你的问题,请参考以下文章
如何在刀片模板的 foreach 循环中访问 laravel 集合?
在刀片 laravel 中多次防止 foreach 循环 html 标记