我计划在Laravel中构建一个多租户应用程序,其中包含一个主子域,其中包含相关公共文件和每个客户的子域,这些客户将拥有指向“主”文件的自己的数据库。我打算尽可能自动化,例如单击创建子域的按钮,将创建数据库并设置相关的配置文件。这一切都没问题,但我不确定我的做法是否最好用,以及是否有任何安全问题。
在bootstrap/start.php
文件中,我有以下内容:
$env = $app->detectEnvironment(array(
$_SERVER['SERVER_NAME'] => array($_SERVER['SERVER_NAME'])
));
这基本上意味着test.example.co.uk的环境是test.example.co.uk。我的安装脚本将在'app / config'中创建一个配置目录'test.example.co.uk`,并在那里添加相关的数据库配置。
这一切都按照我的预期工作,所以我只是在寻求建议,这有什么漏洞吗?
仅添加 - 用户将无法使用安装脚本,仅适用于开发人员
答案 0 :(得分:2)
我认为您的代码没有任何安全问题。我注意到的一件事是你只限于一个环境。这是我的环境设置:
$env = $app->detectEnvironment(function()
{
return getenv("ENV") ? : "local";
});
现在我的环境将被自动检测 - 在服务器上我确实提供了“钩子” 以 getenv 函数的形式,在本地计算机上,它是本地。 我也发送回调到 detectEnvironment 而不是数组 - 以获得更大的灵活性。