我的应用程序将上传的用户数据存储到我的Azure blob存储帐户 - 例如照片等。 blob以其相应的行命名。关系数据库中的主键;例如/tenants/12/users/456/photos/1563445
。
这些文件可由匿名,未经身份验证的用户访问,但我不想公开主键值(以防止"顺序访问"攻击,或者我的竞争对手看看我的服务有多受欢迎。)
目前我的blob存储容器是私有的,所有blob请求都通过我的Web应用程序进行代理。为了减少服务器负载,我想直接公开blob,但这意味着将原始blob名称暴露给最终用户,这会泄露未加密的数据库主键值。
我知道我可以阻止使用共享访问签名访问blob但是我不需要那种安全性 - 我只想混淆blob名称 - 例如通过简单的对称加密。
有没有办法使用"纯Azure"接近并直接暴露blob商店,还是我必须使用自己的代理?
答案 0 :(得分:1)
这完全取决于您和您的应用。只要容器和blob名称遵循已发布的命名约定,您就可以将它们命名为任何所需的名称。但是如果你想混淆它们的真实含义(比如数据库id),你需要做自己的映射,并将该映射存储在某个地方。 blob存储没有内置的混淆功能。
答案 1 :(得分:-1)
也许您需要的只是哈希hashids
然而,通常使用公共容器来获取用户的私人数据并不是一个好主意。 SAS实际上是非常安全的,因为链接只有一段时间可用,在peopel入侵之前,它应该已经过期了。