如何限制Laravel公共文件夹中特定路径的访问?

时间:2017-10-10 13:24:46

标签: php laravel laravel-5 laravel-5.4

我想在Laravel应用程序中限制对public/templates/sb-admin-2路径的访问。

添加此模板是设置步骤的一部分 antonioribeiro/tracker包。现在<MyDomain>/templates/sb-admin-2将我带到模板而没有任何身份验证。让任何用户在生产中访问此模板没有意义。如何限制访问权限以便用户无法访问模板?

由于

2 个答案:

答案 0 :(得分:1)

TL; DR;

<强>别&#39;吨

var targetVal = userInput; game_id = _.find(apiResponse. finished, { game_id: targetVal }) 这个词真的应该意味着公开。无论放在那里,每个人都应该可以使用。另外,Laravel(服务器)将首先检查文件系统,如果没有找到文件,那么它将要求PHP解释请求。

<强>可是...

...你可以通过将文件放在一个单独的目录中来解决这个问题,然后通过php发布文件,例如:

首先,将public重命名为public/templates/sb-admin-2(例如)。这样,每当有人要求 templates 文件夹时,都必须通过Laravel。

其次,制作一条路线,检查Auth并返回询问文件的内容,否则将拒绝访问。

public/xcscxcsx

问题:

  • 所有文件都可用。例如: Route::get('/templates/sb-admin-2/{path?}', function () { if(\Auth::check()) { // 21 = characters count of "templates/sb-admin-2" $newPath = substr(ltrim($_SERVER['REQUEST_URI'], '/'), 21); return \File::get( public_path('xcscxcsx/' . $newPath) ); } return 'access denied'; })->where(['path' => '.*']); 将显示在屏幕上。
  • 任何知道/templates/sb-admin-2/.gitignore存在的人都会有 访问文件。所以也许把它们放在xcscxcsx文件夹中,然后 与storage解析
  • 一起使用

答案 1 :(得分:0)

如果您将Apache 2.4用于Web服务器,则可以使用以下指令将IP列入白名单,并阻止其他人访问目录:

<Directory /var/www/MyDomain/public/templates/sb-admin-2>
    Require ip 192.168.0.1
</Directory>

只需交换IP即可代替192.168.0.1。您可以使用以下语法将多个IP地址添加到白名单:

Require ip 192.168.1.104 192.168.1.205

在此处阅读有关Apache 2.4访问控制的更多信息:https://httpd.apache.org/docs/2.4/howto/access.html