2017-04-24 58 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