Aplikacja w Laravel'u - wyświetlanie i pobieranie filmów - kwestie bezpieczeństwa

0

Pracuję nad aplikacją w Laravel'u korzystam z darmowego player'a o nazwie Plyr do wyświetlania filmów użytkownikom. Aktualnie kod dołączający odpowiedni plik do player'a wygląda tak :

<video id="player" playsinline controls>
               <source src="/movies/{{$movie->id}}.mp4" type="video/mp4" />
            </video>

Zastanawia mnie czy dołączanie filmu w taki prosty sposób wiąże się z jakimś ryzykiem? Czy powinienem udostępniać użytkownikom nazwy plików i folder w którym filmy się znajdują? Jeśli to jest niewłaściwe to jak należałoby do tego podejść?

Podobnie jest z linkiem umożliwiającym pobieranie. Aktualnie kod jest taki :

<a href="{{asset('/movies/'.$movie->id.'.mp4')}}" class="movie-information__detail" download>
                   <download-icon class="movie-information__icon--smaller"></download-icon>
                   <span class="movie-information__detail-value">{{__('download')}}</span>
                </a>

Instynkt mi podpowiada, że to jest zbyt proste i jak patrzę na inne strony to zawsze jest to realizowane w inny bardziej złożony sposób. Co powinienem zrobić aby było tak całkowicie profesjonalnie?

2

Nie da się w pełni zablokować możliwości pobrania filmu, wszak wszystkie media są pobierane na twój komputer i wyświetlane w oknie przeglądarki.

Na pewno co warto zrobić to podmiana $movie->id - bo zgaduje że id to liczba całkowita, więc w łatwy sposób użytkownik byłby w stanie dobrać się do innych filmów, zmieniając numerek. Zamiast id użyj jakiegoś hasza.

1

Tak jak napisał @N3 - to jedynie utrudni pobranie filmu zwykłym użytkownikom. Ale jeśli popatrzysz po necie, to dla osób którym zależy na pobraniu filmu tego typu zabezpieczenia nie są problemem - czy to filmy z Amazona, czy Netflixa, czy HBO - wszystko jest w necie dostępne na pirackich stronach i niestety nawet Ci giganci nie są w stanie nic z tym zrobić. Dla przykładu zabezpieczenie przed możliwością klikania prawym przyciskiem myszy można obejść po prostu wpisując adres strony z już odpaloną konsolą w przeglądarce - i masz wtedy widok kodu strony od razu, bez klikania, w tym linki.
Ale skoro już robisz tego typu stronę, to możesz popatrzeć w narzędziach developerskich jak odbywa się komunikacja w takim serwisie pomiędzy Twoim komputerem a serwerem zdalnym. Czasami można coś ciekawego podpatrzeć, czegoś się nauczyć.

0

Może to nieoptymalne, ale możesz kopiować tymczasowo plik video po wybraniu na stronie, zmieniając jego nazwę na SID i porównując z SID'em usera wyświetlić film, później usuwać kopię, wtedy w źródle będziesz miał coś circa:

<source src="/movdata/{{Session::getId();}}.mp4" type="video/mp4" />

1 użytkowników online, w tym zalogowanych: 0, gości: 1