Laravel 5 在Laravel中安全上载文件

Laravel 5 在Laravel中安全上载文件,laravel-5,web-crawler,file-security,Laravel 5,Web Crawler,File Security,我有一个Laravel5项目,在这个项目中,我正在以中等Blob格式上传数据库中的文件 但在数据库中上传文件需要一些额外的时间来执行 在数据库中上载文件是一种安全的方法,可以防止文件被爬虫程序或某些机器人程序破坏 我已尝试将文件上载到公用文件夹。但是爬虫可以打开这些文件 是否有可能在文件系统中上载文件? 因此爬虫程序无法打开这些文件 我希望这些文件得到保护您可以在公共范围之外上传它们。例如,storage/文件夹是一个好地方。此外,您还可以使用。看一看: $image = \Storage::g

我有一个Laravel5项目,在这个项目中,我正在以中等Blob格式上传数据库中的文件

但在数据库中上传文件需要一些额外的时间来执行

在数据库中上载文件是一种安全的方法,可以防止文件被爬虫程序或某些机器人程序破坏

我已尝试将文件上载到公用文件夹。但是爬虫可以打开这些文件

是否有可能在文件系统中上载文件?

因此爬虫程序无法打开这些文件


我希望这些文件得到保护

您可以在公共范围之外上传它们。例如,
storage/
文件夹是一个好地方。此外,您还可以使用。看一看:

$image = \Storage::get('file.jpg');
编辑 正确的laravel安装只允许通过web浏览器访问
public/
的内容。如果
storage/
resources/
等其他目录也是公共的,那么您的安装确实是不正确的


也就是说,一旦你上传了
storage/
文件夹中的文件,除了使用facade之外,没有人可以访问它们。例如,当您调用
\Storage::get('file.jpg')它返回一个位流,您可以在临时文件夹中分配这些位,然后将其显示在网站中。一旦请求完成,图像将再次从公共域中消失。

无需更改目录这可以通过两种方式实现


我建议同时实现.htaccess和robots.txt,因为一些廉价的爬虫程序忽略robots.txt,但它们不能忽略.htaccess

您可以采用这种方法


由于这只允许授权用户查看图像

存储文件夹可由机器人访问,因此这不是完全证明。我希望这些文件(如图像)不可公开访问您错了。浏览器只能访问public/public。如果您的存储/文件夹是公用的,则您的操作不正确installation@sujitprasad,我已经编辑了答案。另外,您需要了解更多关于laravel基础设施的信息,以了解哪些文件夹是公共文件夹,哪些不是。正如我所想,您的laravel安装不正确。例如,如果您在apache服务器下,通常所有公共文件都位于
public\u html/中。所以,我认为是你在那里安装的。正确的安装应位于该目录之外。现在,您需要在
httpd.conf
中将
document\u root`设置为
public
,只需将您的文件放在
public\u html/
之外,比如说,
/home/your user/upload\u files/
。垃圾机器人可以绕过robots.txt,因为它对它们没有约束力。htaccess是完全证明方法吗?。我希望文件(如图像)不可公开访问。