2017-04-24 32 views
0

我的应用程序将上传的用户数据存储到我的Azure blob存储帐户,例如照片等。 blob以关系数据库中相应行的主键命名;例如/tenants/12/users/456/photos/1563445是否可以混淆或加密Azure blob名称?

这些文件可以被匿名,未经身份验证的用户访问,但我不想公开主键值(为了防止“顺序访问”攻击,或者为了让我的竞争对手知道我的服务是多么受欢迎)。

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

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

有什么办法可以使用“纯粹的Azure”方法实现这一点,并直接暴露blob存储,或者我必须使用我自己的代理?

+1

当您上传文件以散列文件名并在数据库中保留引用时,是否有机会? – CtrlDot

+0

我没有理由不使用SAS网址。不需要这种安全级别与您的问题无关。 – Sentinel

回答

1

这将完全取决于您和您的应用程序。只要容器和blob名称遵循已发布的命名约定,就可以将它们命名为任何您想要的名称。但是,如果你想混淆他们真正的内容(比如数据库ID),你需要做自己的映射,并将该映射存储在某个地方。没有blob存储的内置混淆功能。

-1

也许你所需要的仅仅是使用用户的私人数据的公开容器是不是一个好主意,一般hashids hashids

不过。 SAS实际上非常安全,因为链接只有一段时间,在peopel破解之前,它应该已经过期。

+0

这不是放置产品的地方。这个问题与SAS的好坏无关,或者与使用公共容器无关。 –

+0

@DavidMakogon作者询问了关于混淆blob名称,哈希显然是一个答案。我不认为这是'插件产品',否则任何技术术语都将是'插件产品'。 – xeranic