Protect Video Streaming

Q: apakah kita dapat memproteksi, atau menyulitkan orang untuk download video yang kita siapkan untuk streaming dengan nginx (HLS) dan ffmpeg utk transcoding dan segmenting nya:?


Ya, ada beberapa cara untuk melindungi atau membuat lebih sulit bagi orang untuk mendownload video yang disiapkan untuk streaming menggunakan Nginx (HLS) dan FFmpeg. Berikut adalah beberapa metode yang dapat Anda terapkan:

1. Token Authentication

Token authentication adalah metode di mana setiap permintaan untuk segmen video harus disertai dengan token yang valid. Token ini biasanya memiliki waktu kadaluarsa dan dihasilkan oleh server aplikasi Anda.

  • Langkah-langkah:
    1. Buat token di server aplikasi Anda.
    2. Lampirkan token tersebut ke URL HLS playlist (.m3u8) dan segmen (.ts).
    3. Verifikasi token di server Nginx menggunakan modul seperti nginx-secure-link.

Contoh konfigurasi Nginx untuk nginx-secure-link:

location /hls/ {
    secure_link $arg_st,$arg_e;
    secure_link_md5 "$secure_link_expires$uri$remote_addr secret";

    if ($secure_link = "") {
        return 403;
    }

    if ($secure_link = "0") {
        return 410;
    }

    root /path/to/hls/files;
}

2. HTTPS (SSL/TLS)

Menggunakan HTTPS untuk mengenkripsi komunikasi antara server dan klien. Ini mencegah pihak ketiga untuk mengintip atau menyalin konten video dengan mudah.

  • Langkah-langkah:
    1. Dapatkan sertifikat SSL dari otoritas sertifikat terpercaya.
    2. Konfigurasi Nginx untuk menggunakan sertifikat tersebut.

Contoh konfigurasi Nginx untuk SSL:

server {
    listen 443 ssl;
    server_name your_domain.com;

    ssl_certificate /path/to/your_domain.com.crt;
    ssl_certificate_key /path/to/your_domain.com.key;

    location /hls/ {
        root /path/to/hls/files;
    }
}

3. CORS (Cross-Origin Resource Sharing) Restriction

Batasi domain yang dapat mengakses konten HLS Anda menggunakan CORS headers.

  • Langkah-langkah:
    1. Tambahkan header CORS di Nginx untuk mengizinkan hanya domain tertentu.

Contoh konfigurasi Nginx untuk CORS:

location /hls/ {
    add_header 'Access-Control-Allow-Origin' 'https://your_domain.com';
    root /path/to/hls/files;
}

4. Referrer Restriction

Batasi akses berdasarkan header Referrer sehingga hanya halaman tertentu yang dapat mengakses konten HLS Anda.

  • Langkah-langkah:
    1. Periksa header Referrer di Nginx dan izinkan hanya referensi dari domain Anda.

Contoh konfigurasi Nginx untuk Referrer Restriction:

location /hls/ {
    if ($http_referer !~* "^https://your_domain.com") {
        return 403;
    }
    root /path/to/hls/files;
}

5. DRM (Digital Rights Management)

Menggunakan teknologi DRM seperti Widevine atau PlayReady untuk mengenkripsi video Anda. Metode ini lebih kompleks dan memerlukan penyediaan lisensi DRM.

  • Langkah-langkah:
    1. Gunakan layanan pihak ketiga atau integrasi dengan platform DRM untuk mengenkripsi dan mengelola lisensi video.

Dengan menggunakan salah satu atau kombinasi dari metode di atas, Anda dapat membuat lebih sulit bagi orang untuk mendownload video yang Anda siapkan untuk streaming.