asp.net mvc 5-在Azure Blob存储的img标签中使用共享访问签名Uri



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

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

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

我们应该为每个请求生成这个url吗?,也许用户每次刷新同一个页面5次,我们每次都应该生成不同的url,这不是性能问题吗?,

或者,

我们应该为长过期时间生成这个url吗?,但在这种情况下,如何在过期时间后刷新令牌?,我怎么能理解代币不再有效?,并且由于过期时间长,未经授权的用户仍然可以使用此url访问图像吗?,

我建议采用第一种方法

我们应该为每个请求生成这个url吗时间也许用户每次刷新同一页面5次,我们应该每次生成不同的url,这不是性能问题吗?

以下是我的理由:

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

最新更新