2013-02-25 13 views
7

Mam pliki audio przechowywane w usłudze Amazon S3, do których można uzyskać dostęp z internetowej aplikacji odtwarzacza muzyki, a także z aplikacji mobilnych. Nawet niezalogowani użytkownicy powinni mieć dostęp do muzyki. Jednak nie chcę, aby ludzie używali linku do pobierania treści. Czy można to osiągnąć w s3?Zapobieganie bezpośredniemu pobieraniu plików audio z amazon s3

Dziękujemy

+3

Pozwól mi zobaczyć, czy mam to: masz webapp który uzyskuje dostęp do muzyki i strumieni je do swoich klientów (przeglądarki, aplikacje, itp)? Jeśli tak, możesz ustawić zawartość jako prywatną na S3 i umożliwić jej dostęp do aplikacji za pomocą kluczy AWS/Secret. – Viccari

Odpowiedz

5

Możesz ograniczyć dostęp na podstawie obiektu przekazującego HTTP. To nie jest kuloodporne (Polecający może zostać sfałszowany), ale przestanie przypadkowo pobierać pliki.

Za pomocą zasady zasobnika można ograniczyć możliwe wartości dla strony odsyłającej.

Jest to przykład na tej stronie (w dół trochę) http://docs.aws.amazon.com/AmazonS3/latest/dev/AccessPolicyLanguage_UseCases_s3_a.html

Oto ich przykład:

{ 
    "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/*" 
      ] 
     } 
     } 
    } 
    ] 
} 

Można też zrobić podpisane adresy URL, które wygasają - że zatrzyma ludzi z linkami do treści z innej strony.

1

Jeden scenariusz przychodzi do głowy:

Kiedy aplikacja odtwarzacz muzyczny chce grać coś, to musi zwrócić się do backendu dla URL do MP3. Twój backend może tworzyć URL-e z parametrem "Expires" [1] ustawionym na 10 sekund w przyszłości.

W ten sposób adres URL zwrócony przez twój backend będzie działał tylko przez 10 sekund, co powinno wystarczyć, aby odtwarzacz muzyki zainicjował pobieranie z S3.

Oczywiście użytkownik może pobrać plik, jeśli widzi adres URL w jakimś rodzaju sniffera HTTP w 10-sekundowym oknie i rozpoczyna pobieranie.

Ale nie ma kuloodpornego sposobu ochrony użytkownika przed dostępem jego/jej do treści, do których ma dostęp jego urządzenie. Jeśli treść jest dostarczana do urządzenia, zawsze znajdzie się sposób, aby wystarczająco techniczni ludzie mogli go zdobyć.

p.s. Po prostu heads-up, jeśli twój odtwarzacz MP3 obsługuje wyszukiwanie (szczególnie szukając wysyłając inne zapytanie o zakres HTTP), musisz ponownie uzyskać nowy adres URL z odświeżonym parametrem "wygasa" z backendu.

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