Laravel 4:如何保护资产文件夹?

时间:2013-05-10 13:43:54

标签: security laravel laravel-4 assets

我来自CodeIgniter,文件/文件夹通常以这种方式受到保护:

.php文件

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

index.html文件

<html>
<head>
    <title>403 Forbidden</title>
</head>
<body>

<p>Directory access is forbidden.</p>

</body>
</html>

我想可以使用.htaccess或硬盘方式,但是,如何使用Laravel 4完成?有没有办法使用它的“标准”?

修改是为共享托管而构建的项目。

/assets/{css, img, js}
/packages
/system/{app, bootstrap, vendor, index.php, .htaccess, favicon.ico}

4 个答案:

答案 0 :(得分:5)

您需要创建一个文件.htaccess,之后您需要添加以下内容:

# Disable Directory Browsing
Options All -Indexes

答案 1 :(得分:1)

您应该设置应用程序,以便初始public目录之外的所有内容都在文档根目录之外。这就是为什么Laravel实际上附带public目录的原因之一。通常,大多数人会将此目录符号链接到文档根目录。 public内的任何内容显然是公开的。如果您希望您的资产目录无法访问,您可以选择使用htaccess或index.html文件,就像您所描述的那样。

如果出于某种原因,您需要随机播放一些内容并在文档根目录中包含实际的应用程序文件,那么如果您确定需要,则需要实现某种形式的安全性。这也可以是使用htaccess或index.html文件。通常,htaccess方法更简单。如果您想保护app目录,可以在其中删除.htaccess文件,如下所示。

deny from all

答案 2 :(得分:1)

我在这里提供了类似的答案:Laravel image gallery logic

原则上 - 您应该将所有资产存储在公开之外 - 并使用PHP readfile()根据需要安全地向用户提供这些资产。

答案 3 :(得分:0)

答案可能会延迟一年,但我认为这可能有助于其他想要解决类似问题的人。

查看Kelt Dockins&#39;发表hereThe Codesleeve Laravel Asset Pipeline允许您将资产文件夹安全地放在/ public文件夹之外。