【问题标题】:how to prevent access database and resources in laravel blade?如何防止访问laravel刀片中的数据库和资源?
【发布时间】:2020-11-30 13:45:20
【问题描述】:

我想创建一个商店构建器,用户可以创建自己的主题并将其上传到我的主机。现在我想防止用户无法访问刀片中的数据库和模型和资源。

因为他们可以通过我服务器上的刀片编写恶意代码并导致系统崩溃。

我只想为每个刀片的页面发送一个变量列表,其中包含他们在此页面上所需的值,用户只能使用这些变量,不能访问我的服务器数据库或资源和我的文件服务器。 我必须防止用户无法访问刀片中的数据库

有人对此有想法吗?

谢谢

【问题讨论】:

  • 如果你在视图渲染之前得到所有数据,也许关闭数据库连接会做你想做的事DB::disconnect('foo');laravel.com/docs/4.2/database#accessing-connections
  • 您的问题是 stricte 基于意见的,不符合 StackOverflow 的要求。恐怕它很快就会关闭。
  • 如果我收到信息后断开数据库。用户不能通过blade和php重新连接吗?
  • blade 可以包含 PHP 块,所以你不会限制任何东西......也许像 Twig 这样带有沙盒的东西可能会起作用

标签: php mysql database laravel laravel-blade


【解决方案1】:

我也有和你类似的需求

经过多次实验和尝试,我找到了一个可行的解决方案, 但有限制/限制

“从我的角度来看”考虑引入另一种呈现内容的方式是合适的。

根据我的研究,我找到了 2 个可能的解决方案

  • 介绍liquid
    • 专业版
      • 无法访问代码
    • 反对
      • 必须提前处理所有可访问的内容
  • 介绍TWIG
    • 专业版
      • 您没有默认访问 eloquent 或其他任何未传递给它的权限
      • 您可以传递一个旨在作为 php 类及其所有方法和属性的“对象”
    • 反对
      • 仅仅因为您可以传递“对象”,您可能会遇到不愉快的情况,即对象带来了视图不应访问的东西

结论

总之,“我的”选择是流动的,因为它保证了我更多的安全性,此外其他公司(如 shopify)也决定使用它来实现这一特性

【讨论】:

    猜你喜欢
    • 2019-07-30
    • 2017-07-16
    • 2016-09-13
    • 2017-08-19
    • 1970-01-01
    • 2022-07-21
    • 1970-01-01
    • 2021-07-06
    • 2020-01-12
    相关资源
    最近更新 更多