2

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

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

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

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

有没有办法在文件系统中上传文件?

这样爬虫就无法打开这些文件。

我希望这些文件是安全的

4

3 回答 3

2

您可以将它们上传到公共范围之外。例如,storage/文件夹是一个好地方。此外,您可以使用文件系统管理器来获取它们。看一看:

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

编辑

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

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

于 2015-12-02T04:36:00.563 回答
0

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

LazyOne 使用 .htaccess 回答

使用 robots.txt

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

于 2015-12-02T05:15:51.873 回答
0

你可以按照这个方法

仅经过身份验证的用户的图像可访问性

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

于 2015-12-02T09:57:29.183 回答