Daftar hitam atau daftar putih Referer mengontrol akses ke resource Anda berdasarkan header Referer dari permintaan HTTP. Fitur ini mencegah hotlinking dan penggunaan resource yang tidak sah. Setelah dikonfigurasi, CDN dan mengevaluasi header Referer untuk memberikan atau menolak akses.
Penting
-
Secara default, fitur daftar hitam/daftar putih Referer untuk CDN dan Alibaba Cloud dimatikan, sehingga situs web mana pun dapat mengakses resource Anda.
-
Daftar hitam dan daftar putih Referer merupakan salah satu cara untuk mencegah hotlinking. Untuk metode lainnya, lihat Praktik terbaik untuk mencegah hotlinking.
-
Saat Anda menambahkan nama domain seperti aliyundoc.com ke daftar Referer, CDN dan menerapkan aturan tersebut baik untuk domain itu sendiri maupun seluruh subdomain-nya (seperti *.aliyundoc.com).
Anatomi Referer
Header Referer menunjukkan URL halaman tempat permintaan berasal. URL Referer terdiri atas skema, domain, path, dan parameter kueri, seperti yang ditunjukkan pada gambar berikut.
Catatan
-
Nilai header Referer pada dasarnya adalah sebuah URL.
-
Alibaba Cloud mendukung konfigurasi Referer berbasis domain saja. Untuk mengaktifkannya, pilih opsi Ignore Scheme.
Kasus penggunaan
Daftar hitam atau daftar putih Referer terutama melindungi resource situs web Anda agar tidak di-link secara langsung atau digunakan oleh situs web lain. Kasus penggunaan umum meliputi:
-
Perlindungan hak cipta: Untuk situs web yang berisi konten berhak cipta, Anda dapat menggunakan daftar putih Referer untuk membatasi akses hanya ke situs web yang sah.
-
Pencegahan hotlinking: Daftar putih memastikan bahwa resource Anda hanya dapat diakses dari situs web tertentu, sehingga mencegah situs web lain mengonsumsi bandwidth Anda dengan melakukan hotlinking langsung ke konten Anda.
-
Keamanan situs web yang ditingkatkan: Dengan hanya mengizinkan situs web tertentu mengakses resource Anda, Anda dapat mencegah hotlinking berbahaya, akses tidak sah, dan pencurian informasi sensitif.
-
Kontrol sumber traffic: Anda dapat membatasi traffic dari situs web tertentu untuk mengontrol sumber traffic serta meningkatkan stabilitas dan keamanan situs web Anda.
Cara kerja
Point of Presence (POP) memeriksa header Referer dari setiap permintaan. Jika Referer tidak ada dalam daftar putih atau jika berada dalam daftar hitam, POP akan menolak permintaan tersebut. Hal ini menghemat bandwidth dan mengurangi beban pada server origin. CDN dan menggunakan aturan berikut untuk memproses permintaan Referer:
-
Jika Referer dalam permintaan cocok dengan entri dalam daftar hitam atau tidak cocok dengan entri apa pun dalam daftar putih, CDN dan akan menolak permintaan tersebut.
-
Jika Referer dalam permintaan cocok dengan entri dalam daftar putih, CDN dan akan mengizinkan permintaan tersebut.
Catatan penggunaan
-
Setelah Anda mengonfigurasi daftar hitam Referer, permintaan dari sumber yang masuk daftar hitam tetap dapat mencapai POP CDN dan . Namun, permintaan tersebut ditolak dengan kode status 403 dan dicatat dalam log CDN dan .
-
Fitur daftar hitam/daftar putih Referer menerapkan kontrol akses berdasarkan header Referer dalam permintaan HTTP. Pemblokiran permintaan dikenai biaya kecil untuk traffic yang dihasilkan. Untuk HTTPS, Anda juga dikenai biaya per permintaan.
-
Karena hotlinking CDN berasal dari akses jaringan publik, aturan Referer hanya berlaku untuk nama domain publik.
Prosedur
-
Masuk ke CDN console.
-
Di panel navigasi kiri, klik Domain Names.
-
Pada halaman Domain Names, temukan nama domain target lalu klik Manage di kolom Actions.
-
Di panel navigasi domain, klik Access Control.
-
Pada tab Referer Black/Whitelist, klik Modify.
-
Konfigurasikan parameter Referer. Untuk informasi lebih lanjut, lihat Parameter konfigurasi Referer.
-
Klik OK untuk menyimpan konfigurasi.
Parameter konfigurasi Referer
|
Parameter
|
Deskripsi
|
|
Type
|
Catatan
Daftar hitam dan daftar putih bersifat saling eksklusif. Anda hanya dapat memilih satu jenis dalam satu waktu.
|
|
Rules
|
-
Anda dapat menambahkan beberapa Referer. Pisahkan setiap entri dengan baris baru.
-
Anda dapat menggunakan tanda bintang (*) sebagai wildcard untuk mencocokkan semua subdomain. Misalnya, *.example.com mencocokkan semua subdomain dari example.com.
-
Jika Anda tidak menentukan wildcard, satu entri akan mencocokkan domain itu sendiri dan seluruh subdomain-nya. Misalnya, entri untuk example.com mencocokkan example.com dan *.example.com.
|
|
Redirect URL
|
Jika permintaan diblokir, POP mengembalikan redirect 302 dengan header respons Location. Parameter ini menentukan nilai untuk header Location tersebut. URL harus diawali dengan http:// atau https://. Contoh: http://www.example.com.
|
|
Advanced Settings
|
Allow resource URL access from browsers
|
Opsi ini tidak dipilih secara default. Jika Anda memilih opsi ini, permintaan dengan referer kosong tidak akan diblokir dan diizinkan mengakses resource, terlepas dari pengaturan daftar Anda.
Referer kosong didefinisikan sebagai salah satu kondisi berikut:
|
|
Exact Match
|
Opsi ini tidak dipilih secara default. Jika Anda memilih opsi ini, perilaku default pencocokan subdomain dinonaktifkan. Jika Anda tidak menggunakan wildcard, entri seperti example.com hanya akan mencocokkan example.com.
|
|
Ignore Scheme
|
-
Jika opsi Ignore Scheme tidak dipilih, header Referer harus menyertakan skema HTTP atau HTTPS.
-
Jika Anda memilih opsi Ignore Scheme, header Referer tidak wajib menyertakan skema.
|
|
Rule Condition
|
Kondisi aturan memungkinkan suatu aturan diterapkan hanya ketika permintaan memenuhi kriteria tertentu.
Penting
Saat suatu fitur merujuk pada kondisi aturan, urutan eksekusi mengikuti prioritas kondisi aturan terkait, bukan urutan konfigurasi fitur.
|
Verifikasi konfigurasi
Anda dapat menggunakan perintah curl untuk menguji konfigurasi Anda. Gunakan opsi -e untuk menentukan nilai referer dan opsi -I untuk hanya mengambil header respons dari nama domain yang dipercepat. Contoh berikut menggunakan daftar putih untuk verifikasi.
Skenario 1: Parameter Rules saja
Catatan
-
Dalam skenario ini, aturan Referer untuk aliyun.com telah dikonfigurasi. Parameter Redirect URL, Advanced Settings, dan Rule Condition tidak dikonfigurasi.
-
Konfigurasi ini mencocokkan permintaan yang berisi Referer dari http(s)://aliyun.com atau subdomain-nya. Permintaan dengan Referer yang tidak ada dalam daftar putih akan ditolak.
-
Uji akses dengan Referer dari domain utama. Perintah: curl -e http://aliyun.com -I <accelerated_domain_name>.
HTTP/1.1 200 OK
Server: Tengine
-
Uji akses dengan Referer dari subdomain. Perintah: curl -e http://sub.aliyun.com -I <accelerated_domain_name>.
HTTP/1.1 200 OK
Server: Tengine
-
Uji akses dengan Referer dari domain berbeda. Perintah: curl -e http://aIiyun.com -I <accelerated_domain_name>.
HTTP/1.1 403 Forbidden
Server: Tengine
-
Uji akses dengan Referer kosong. Perintah: curl -e "" -I <accelerated_domain_name>.
HTTP/1.1 403 Forbidden
Server: Tengine
-
Uji akses dengan Referer hanya berupa domain. Perintah: curl -e aliyun.com -I <accelerated_domain_name>.
HTTP/1.1 403 Forbidden
Server: Tengine
Skenario 2: Rule dan Allow resource URL access from browsers
Catatan
-
Dalam skenario ini, aturan Referer diatur ke aliyun.com dan opsi Allow direct access to resource URLs from browsers dipilih. Pengaturan lanjutan lainnya, URL redirect, dan kondisi aturan tidak dikonfigurasi.
-
Dibandingkan dengan Skenario 1, konfigurasi ini juga mengizinkan permintaan dengan Referer kosong, seperti permintaan dari akses browser langsung.
-
Uji akses tanpa Referer. Perintah: curl -I <accelerated_domain_name>.
HTTP/1.1 200 OK
Server: Tengine
-
Uji akses dengan nilai Referer kosong (""). Perintah: curl -e "" -I <accelerated_domain_name>.
HTTP/1.1 200 OK
Server: Tengine
Skenario 3: Rule dan Ignore Scheme
Catatan
-
Dalam skenario ini, aturan Referer diatur ke aliyun.com dan opsi Ignore Scheme dipilih. Pengaturan lanjutan lainnya, URL redirect, dan kondisi aturan tidak dikonfigurasi.
-
Konfigurasi ini mirip dengan Skenario 1, tetapi juga mengizinkan permintaan Referer yang tidak menyertakan skema, seperti permintaan yang hanya berisi nama domain aliyun.com.
Uji akses dengan Referer yang tidak memiliki skema. Perintah: curl -e aliyun.com -I <accelerated_domain_name>.
HTTP/1.1 200 OK
Server: Tengine
FAQ
Skema Referer tidak ada
Dalam kebanyakan kasus, header Referer dalam permintaan pengguna menyertakan skema HTTP atau HTTPS. Namun, dalam situasi tertentu, Referer mungkin tidak menyertakan skema.
Salah satu skenario umum adalah ketika pengguna berpindah dari situs web non-aman (yang menggunakan HTTP) ke situs web aman (yang menggunakan HTTPS). Browser dapat memodifikasi atau menghapus header Referer berdasarkan kebijakan keamanan, seperti Referrer-Policy, untuk melindungi data pengguna. Dalam kasus ini, header Referer mungkin hanya berisi domain, tanpa skema.
Selain itu, beberapa browser atau server proxy dapat secara otomatis menghapus header Referer dalam situasi tertentu, seperti saat mode penjelajahan pribadi digunakan atau situs web diakses melalui proxy anonim.
Oleh karena itu, Anda harus mempertimbangkan permintaan yang tidak memiliki skema dalam header Referer. Jika Anda ingin mencocokkan permintaan semacam itu, pilih opsi Ignore Scheme.
Menangani Referer kosong
Referer kosong terjadi ketika header Referer tidak ada dalam permintaan HTTP atau nilainya kosong. Header Referer dalam permintaan biasanya berisi URI lengkap yang mencakup skema (seperti http atau https), hostname, dan mungkin juga path serta string kueri. Referer kosong dapat terjadi dalam skenario berikut:
-
Akses langsung: Saat pengguna memasukkan URL langsung ke bilah alamat browser, menggunakan bookmark, atau membuka tautan di tab baru kosong, tidak ada halaman referensi. Oleh karena itu, header Referer kosong.
-
Privasi pengguna: Pengguna atau perangkat lunak yang digunakan pengguna, seperti ekstensi browser atau mode privasi, dapat sengaja menghapus header Referer untuk melindungi privasi.
-
Protokol keamanan: Saat pengguna berpindah dari halaman HTTPS ke halaman HTTP, browser biasanya tidak mengirim header Referer untuk mencegah kebocoran informasi sensitif.
-
Kebijakan sisi klien: Beberapa situs web atau aplikasi dapat mengontrol apakah header Referer dikirim untuk alasan keamanan dengan menetapkan tag <meta> atau header HTTP seperti Referrer-Policy.
-
Permintaan lintas asal: Beberapa permintaan lintas asal mungkin tidak menyertakan header Referer karena kebijakan keamanan browser.
Cara Anda menangani permintaan dengan Referer kosong bergantung pada kasus penggunaan dan persyaratan keamanan spesifik Anda. Berikut beberapa rekomendasi:
-
Kebijakan default: Jika layanan Anda tidak bergantung pada informasi Referer untuk membuat keputusan, Anda dapat mengizinkan permintaan dengan Referer kosong.
-
Izinkan akses: Untuk URL atau origin tertentu, Anda dapat memilih opsi Allow resource URL access from browsers. Ini mengizinkan akses meskipun Referer kosong. Dalam hal ini, POP CDN dan memberikan akses ke resource tersebut.