2013-02-25 94 views
7

我有存儲在Amazon S3的音頻文件,可以從基於網絡的音樂播放器應用程序訪問,也可以從移動應用程序訪問。即使沒有登錄的用戶也應該可以訪問音樂。不過,我不希望人們使用鏈接下載內容。這可以在s3中完成嗎?防止從亞馬遜s3直接下載音頻文件

謝謝

+3

讓我看看,如果我得到了它:你有訪問音樂和它流到客戶端(瀏覽器,應用等)web應用程序?如果是這樣,您可以在S3上使內容保密,並讓您的應用通過您的AWS /密鑰進行訪問。 – Viccari 2013-02-25 15:32:17

回答

5

您可以根據HTTP引用來限制訪問。這不是防彈(推薦人可以被欺騙),但它會阻止隨意下載。

您使用存儲桶策略來限制Referrer的可能值。

有此頁面上的一個例子(稍微向下滾動)http://docs.aws.amazon.com/AmazonS3/latest/dev/AccessPolicyLanguage_UseCases_s3_a.html

這裏是他們的榜樣:

{ 
    "Version":"2008-10-17", 
    "Id":"http referer policy example", 
    "Statement":[ 
    { 
     "Sid":"Allow get requests originated from www.example.com and example.com", 
     "Effect":"Allow", 
     "Principal":"*", 
     "Action":"s3:GetObject", 
     "Resource":"arn:aws:s3:::examplebucket/*", 
     "Condition":{ 
     "StringLike":{ 
      "aws:Referer":[ 
      "http://www.example.com/*", 
      "http://example.com/*" 
      ] 
     } 
     } 
    } 
    ] 
} 

你也可以做簽署的網址到期 - 這將阻止人們鏈接到您的內容來自其他網站。

1

一種情況浮現在腦海:

當你的音樂播放器應用程序要玩的東西,它要問你的後端的URL到MP3。您的後端可以生成將「將過期時間」參數[1]設置爲10秒的URL。

這樣,後端返回的URL只能用於10秒,這對於音樂播放器從S3啓動下載應該足夠了。

當然,如果用戶在10秒窗口中看到某種類型的HTTP嗅探器中的URL並開始下載,用戶可以下載該文件。

但是,沒有防彈的方法來保護用戶免受他們設備訪問的內容的掌握。如果內容交付給設備,那麼總是有足夠的技術人員掌握它的方法。

p.s.如果您的MP3播放器支持尋找(特別是通過發送另一個HTTP範圍請求來尋找),那麼您必須重新獲得一個新的URL,並在後端刷新「expires」參數。

[1] http://s3.amazonaws.com/doc/s3-developer-guide/RESTAuthentication.html