在 Laravel 中安全上传文件

Secure upload files in Laravel

我有一个 Laravel 5 项目,我在其中以 Medium Blob 格式上传数据库中的文件。

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

在数据库中上传文件是保护文件免受爬虫或某些机器人攻击的安全方法。

我尝试将文件上传到 Public 文件夹。但是爬虫可以打开这些文件。

有什么方法可以在文件系统中上传文件吗?

让爬虫无法打开这些文件。

我希望这些文件受到保护

您可以在 public 范围之外上传它们。例如,storage/ 文件夹是个好地方。此外,您可以使用 file system manager 获取它们。看看:

$image = \Storage::get('file.jpg');

编辑

正确的 laravel 安装只允许通过网络浏览器访问 public/ 的内容。如果其他目录如storage/resources/也是public,那你安装确实不正确。

说,一旦您将文件上传到 storage/ 文件夹中,除了您使用 \Storage 门面之外,没有人可以访问它们。例如,当您调用 \Storage::get('file.jpg'); 它 returns 比特流时,您可以将它们分配到一个临时文件夹中,然后将其显示在网站上。请求完成后,图像将再次从 public 域中消失。

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

LazyOne Answer using .htaccess

Using robots.txt

我建议同时实施 .htaccess 和 robots.txt,因为一些便宜的爬虫会忽略 robots.txt 但他们不能忽略 .htaccess

你可以按照这个方法

image-accessibility-for-authenticated-users-only

因为这只允许授权用户查看图像