0
我使用Azure blob存儲來存儲來自客戶端的數據。使用共享訪問簽名刪除blob內容而不刪除權限
向客戶提供共享訪問簽名,但沒有「刪除」權限。
不過,我可以刪除沒有「刪除」權限的BLOB內容與下面的代碼:
// sharedKey doesn't contain 'Delete' permission
var credentials = new StorageCredentials(sharedKey);
var blob = new CloudBlockBlob(blobPath, credentials);
var blockIds = new List<string>();
// If not getting all current blocks ids, all current data will be lost.
// if (blob.Exists())
// {
// blockIds.AddRange(blob.DownloadBlockList().Select(b => b.Name));
// }
var blockId =
Convert.ToBase64String(
Encoding.Default.GetBytes(blockIds.Count.ToString("d6", CultureInfo.InvariantCulture)));
blockIds.Add(blockId);
byte[] eventInBytes = Encoding.Default.GetBytes(string.Format(CultureInfo.InvariantCulture, "{0}\n", formattedEvent));
using (var eventStream = new MemoryStream(eventInBytes))
{
blob.PutBlock(blockId, eventStream, null);
}
blob.PutBlockList(blockIds);
這是一個藍色的缺陷(或我失蹤的共享訪問簽名任何方式?概念爲了解決這個問題
感謝
如果我沒有弄錯,你並不是真的刪除了這個blob。如果您在共享訪問簽名中包含寫入權限,則只需覆蓋您可以執行的blob。 –
是真的,但您必須同意通過上傳空字符串覆蓋blob與刪除blob相同(我的意思是,您不會刪除文件本身,但另一方面,空blob等於根本沒有blob文件) – yonisha
我不這麼認爲。雖然我同意你的blob對你沒有用處,但我不會被刪除。如果用戶上傳一些垃圾數據而不是空字符串呢?你還會認爲這個blob被刪除了嗎? –