【问题标题】:controlled access of classified files in laravel-4laravel-4 中分类文件的受控访问
【发布时间】:2014-02-26 16:44:18
【问题描述】:

我读过 public 文件夹中的文件可以通过 Laravel 中的网络浏览器访问。当我在我的公用文件夹中输入文件的路径时,我看不到该文件,除非我在路由中定义了路径。

我正在制作一个下载页面,以便用户可以通过 from 下载加密/分类的材料。

我不希望用户能够以下载表单或其他受控方法以外的任何其他方式访问文件。

我是否需要创建一个私人文件夹并存储他们的文件。如果我这样做了,我还能访问后端的文件吗?

或者除非路由定义,否则无法访问公用文件夹中的文件?如果是这样,我可以将文件存储在 public 下吗?

【问题讨论】:

    标签: security laravel-4 public accessible


    【解决方案1】:

    任何人都可以访问公共文件夹下的文件,除非您的网络服务器将策略设置为特定目录。

    如果您目前无法访问公用文件夹中的文件,是因为,可能,您没有正确写入 url,即:

    一个文件在

    /var/www/myapp/public/img/logo.png 
    

    可通过以下方式访问:

    http://myapp.com/img/logo.png
    

    请注意,您的 URL 中不存在您文件夹的公共部分仅当您的网络服务器配置正确并且您的 .htaccess 文件就位并且能够重写您的 URL。

    对于敏感文件,您可以将它们存储在您的应用程序文件夹(或任何其他公共文件夹以外的文件夹)中,只有您的应用程序可以访问,这样就可以了:

    /var/www/myapp/app/storage/<create a new folder here>
    

    然后,是的,创建一条路径来读取和展示您的安全文件:

    Route::get('readfile/{fileName}', ['before' => 'auth', 'use' => 'ReadFileController@read']);
    

    过滤器'before' =&gt; 'auth' 将确保未经身份验证的人永远无法访问文件。

    在您的控制器中,您可以执行以下操作来检查是否可以看到文件:

    class ReadFileController extends Controller {
    
        public function read($fileName)
        {
            if(Auth::user()->id == 1) // of course this is not a good way, just an example
            {
                return $this->getFile($fileName);
            }
            else
            {
                return Response::make(null, 403); // forbidden
            }
        }
    
        private function getFile($fileName)
        {
            ...
        }
    
    }
    

    【讨论】:

    • TY 这清除了一些事情。澄清一下,当您说“...网络服务器已正确配置...”时,您的意思是正确配置以支持不需要键入 public。一般没有正确配置?此外,身份验证是否只允许某些用户使用该路由来访问任何文件,或者它是否对每个文件/目录进行身份验证,我的意思是如果用户想要他们可以输入一个路径来查看一个文件,当他们应该只能够查看另一个文件。
    • 配置为指向公共并重写 url 并从中删除 index.php。如果配置正确,这就是您访问文件的方式,其他任何人也可以。刚刚编辑以回答您的第二个问题。
    【解决方案2】:

    此外,您可以在路由中使用身份验证“middelware”来添加更好的访问控制。

    Route::get('routeName', ['middleware' => 'auth', 'uses' =>'XController@action']);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-06
      • 2014-02-08
      • 2013-02-03
      • 2014-09-13
      • 2014-07-25
      • 2015-01-18
      • 1970-01-01
      • 2013-07-05
      相关资源
      最近更新 更多