服务器 Gind.cn

服务器问题集锦,包括 Linux(Ubuntu, Centos,Debian等)和Windows Server服务器

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

我们正在开发一个networking应用程序,其中(其他function)用户可以上传文件。 但是,由于存储空间有限,我们无法将这些文件存储在我们的VPS上,因此我们决定使用S3。 主要的问题是我们必须确保用户只能访问他们自己的数据。 所以我们保留数据库中的文件列表,以及有权访问的用户列表。 我们的服务器可以很容易地决定用户是否有权访问文件。 但是如何实际向用户提供文件呢? 我已经考虑过一些可能性,但是其中没有一个似乎是最好的。 1.使用PHP生成(过期)签名的URL 这是一个非常简单的方法,速度也很快,但是会导致非常非常非常丑陋和长期的结果。 以下是如何做到这一点 。 2.混淆的url 这意味着,我们将这些文件公开在S3上进行读取,但是所有文件都存储在难以猜测的命名文件夹中,例如: 24fa0b8ef0ebb6e99c64be8092d3ede20000 。 不过,也许这不是最安全的方法。 即使你永远不会猜到一个文件夹名称,当你知道它(因为你实际上有权访问它),你可以与任何人(任何未经授权的人)分享该链接。 3.通过我们的服务器下载文件 这意味着这些文件不是由S3直接提供的,而是我们的服务器首先安全地读取文件并提供服务。 我们真的不想要这个:) 4.检查推荐人 可以通过“确保”请求来自我们的服务器(您可以设置S3来检查引用者)来改进混淆url解决scheme。 然而,这将是一个非常不可靠的解决scheme,因为不是所有的浏览器发送引用数据,它也可以是伪造的。 从不同的客户端安全地向Amazon S3提供文件的好方法是什么?