我正在尝试利用S3让我的客户下载我的软件包。我所设想的是创建一个带有授权的简单Web应用程序例如(download.mysoftware.com
)一旦用户通过身份验证,他们就会看到用于下载软件的S3 URL。我将根据客户创建用户帐户。
我担心的是,如果用户复制S3 URL链接然后将其提供给未经过身份验证以下载软件的人,会发生什么?
是否有可能创建一个S3策略来防止这种情况并为我的用例工作?我看过只允许特定的IP,但是,我没有办法找到客户的IP,并且不想先问他们,然后每次都将它添加到策略中。
允许特定IP的一种方法是,如果我只允许从链接到(<button class="button-action" data-id="1">
<button class="button-action" data-id="2">
<button class="button-action" data-id="3">
)的IP下载,但是下载将真正发生在我的Web应用程序而不是S3。这似乎是双重努力。
答案 0 :(得分:2)
当用户提出下载您的应用程序的请求时,请为他们生成pre-signed URL,并且过期时间很短。它只需要有效,只要它们开始下载你的文件,所以即使几分钟的有效性也可能很多。
虽然技术上用户可以共享其中一个URL,但他们必须将URL传送给其他人并让他们快速下载,这可能足以阻止他们尝试共享URL。 (完美的防御更加困难,反正可能是不必要的;没有办法阻止用户亲自将他们下载的文件传输给其他人。)