小编Tam*_*Pap的帖子

为多个客户端安全地存储和提供文件

我们正在开发一个网络应用程序,其中(除其他功能外)我们的用户可以上传他们的文件。但是我们无法将这些文件存储在我们的 VPS 上,因为存储空间有限,所以我们决定使用 S3。

主要问题是我们必须确保用户只能访问他们自己的数据。所以我们将文件列表保存在我们的数据库中,以及可以访问它们的用户列表。我们的服务器可以轻松决定用户是否可以访问文件。但是如何将文件实际提供给用户呢?

我已经考虑了一些可能性,但实际上它们似乎都不是最好的。

1. 用 PHP 生成(过期)签名的 url

这是一个非常简单的方法,它也很快,但会产生非常丑陋和长的 url。

这是如何做到的

2. 混淆的 URL

这意味着,我们将文件公开以供在 S3 上读取,但所有文件都存储在难以猜测的命名文件夹中,例如:24fa0b8ef0ebb6e99c64be8092d3ede20000. 然而,也许这不是最安全的方式。即使您永远猜不到文件夹名称,在您知道它之后(因为您实际上可以访问它),您也可以与任何人(与任何未经授权的人)共享该链接。

3.通过我们的服务器下载文件

这意味着文件不是由 S3 直接提供的,但首先我们的服务器安全地读取它并提供它。我们真的不想要这个:)

4. 检查推荐人

混淆后的URL的解决方案可以用“确保”的要求来自于我们的服务器(你可以设置S3检查引荐)得到改善。然而,这将是一个非常不可靠的解决方案,因为并非所有浏览器都会发送引用数据,而且它也可能被伪造。

为不同的客户端安全地从 Amazon S3 提供文件的好方法是什么?

amazon-s3

8
推荐指数
1
解决办法
4181
查看次数

标签 统计

amazon-s3 ×1