是否可以混淆或加密Azure blob名称?

是否可以混淆或加密Azure blob名称?,azure,blob,Azure,Blob,我的应用程序将上传的用户数据存储到我的Azure blob存储帐户,例如照片。blob以关系数据库中对应行的主键命名;例如/tenants/12/users/456/photos/1563445 这些文件意味着匿名、未经验证的用户可以访问,但我不想公开主键值以防止顺序访问攻击,也不想让我的竞争对手看到我的服务有多受欢迎 目前,我的blob存储容器是私有的,所有blob请求都通过我的web应用程序代理。为了减少服务器负载,我希望直接公开blob,但是这意味着向最终用户公开原始blob名称,这会泄露

我的应用程序将上传的用户数据存储到我的Azure blob存储帐户,例如照片。blob以关系数据库中对应行的主键命名;例如/tenants/12/users/456/photos/1563445

这些文件意味着匿名、未经验证的用户可以访问,但我不想公开主键值以防止顺序访问攻击,也不想让我的竞争对手看到我的服务有多受欢迎

目前,我的blob存储容器是私有的,所有blob请求都通过我的web应用程序代理。为了减少服务器负载,我希望直接公开blob,但是这意味着向最终用户公开原始blob名称,这会泄露未加密的数据库主键值

我知道我可以使用共享访问签名阻止对blob的访问,但是我不需要那种安全性——我只想混淆blob名称——比如通过简单的对称加密


是否有任何方法可以通过使用纯Azure方法并直接公开blob商店来实现这一点,或者我必须使用自己的代理?

这将完全取决于您和您的应用程序。只要容器和blob名称遵循已发布的命名约定,您就可以随意命名它们。但是,如果您想混淆它们的真正含义,例如数据库id,则需要进行自己的映射,并将该映射存储在某个位置。blob存储没有内置的模糊处理功能。

也许您需要的只是hashid


然而,一般来说,使用公共容器存储用户的私有数据并不是一个好主意。SAS实际上非常安全,因为该链接只在peopel入侵之前可用一段时间,它应该已经过期。

上传文件时是否有机会对文件名进行散列,然后在数据库中保留引用?我看不出有什么理由不使用SAS URL。不需要这种级别的安全性与您的问题无关。GUID作为名称似乎是一种解决方案。非顺序的,而且我听说很难重新生成相同的guid,只要生成guid的算法使用NIC MAC地址,就很难再生成两倍。这意味着猜测现有的guid更加困难。这不是插入产品的地方。而这个问题与SAS的好坏无关,也与使用公共容器无关。@DavidMakogon当作者问及模糊blob名称时,hashids显然是一个答案。我不认为这是“插头产品”,否则任何技术术语都将是“插头产品”。