在img标记中为Azure Blob存储使用共享访问签名Uri

时间:2015-06-24 12:03:57

标签: azure asp.net-mvc-5 azure-storage-blobs

我们已经在Azure Blob Storage中上传了具有公共访问权限的图像,在我们的Asp.Net MVC应用程序中,我们已经用这种语法显示了它们:

<img src="https://xxxxx.blob.core.windows.net/image.png"/>

然而,这是一个安全漏洞。未经授权的用户也可以轻松地从浏览器访问所有图像。这就是为什么我们尝试使用共享访问签名URL来处理我们的图像。但我有一些问题;

我们是否应该为每个请求生成此URL以及过期时间?,也许用户每次刷新相同的页面5次,我们应该每次生成不同的URL,这不是性能问题吗?

或者,

我们是否应该为此过期时间生成此URL?但是在这种情况下,如何在到期时间后刷新令牌?,我怎样才能理解令牌无效更多?并且具有较长的到期时间,可以是未经授权的用户仍使用此网址访问图片?,

1 个答案:

答案 0 :(得分:3)

我建议采用第一种方法

  

我们是否应该针对小到期的每个请求生成此网址   时间?,也许用户每次刷新同一页5次,我们应该   每次生成不同的url,这不是性能问题吗?

以下是我的理由:

  • 在页面加载后,当浏览器中显示图像时,我假设您不需要动态重新加载图像,直到用户重新加载页面为止,因此SAS URL已达到其目的。
  • 生成SAS URL不涉及对存储的网络调用,因此不会影响性能。但是,如果页面上有100个图像并且所有图像都来自同一个blob容器,那么您可以在容器上创建具有Read权限的短期SAS令牌,并将该SAS令牌附加到每个图像URL而不是分别为每个图像创建SAS令牌。这样,您只需为页面上的所有图像创建一次SAS令牌。