Jika hotlinking dari situs web lain meningkatkan biaya lalu lintas OSS Anda, konfigurasikan daftar putih atau blacklist Referer untuk membatasi akses.
Cara kerja
Saat browser meminta file OSS, header HTTP Referer mengidentifikasi halaman yang melakukan permintaan. OSS memvalidasi nilai Referer ini untuk memverifikasi asal permintaan.
Setelah Perlindungan hotlink dikonfigurasi, OSS mengevaluasi permintaan dalam urutan berikut:
-
Pemeriksaan Referer kosong: OSS memeriksa apakah Referer kosong. Jika kosong, logika berikut berlaku:
-
Jika Anda mengizinkan permintaan dengan Referer kosong, permintaan tersebut diizinkan.
-
Jika Anda tidak mengizinkan permintaan dengan Referer kosong dan daftar putih kosong, permintaan tersebut diizinkan.
-
Jika Anda tidak mengizinkan permintaan dengan Referer kosong dan daftar putih tidak kosong, permintaan tersebut ditolak.
Jika Referer tidak kosong, pemeriksaan dilanjutkan ke langkah berikutnya.
-
-
Pemeriksaan blacklist: OSS memeriksa apakah Referer cocok dengan entri apa pun di blacklist. Kecocokan mengakibatkan penolakan segera — daftar putih tidak diperiksa. Jika tidak cocok, pemrosesan dilanjutkan.
-
Pemeriksaan daftar putih: OSS memeriksa apakah Referer cocok dengan entri apa pun di daftar putih. Kecocokan mengizinkan permintaan; ketidakcocokan menolaknya.
Prosedur
-
Buka daftar Buckets dan klik bucket target.
-
Di panel navigasi kiri, pilih . Aktifkan opsi Hotlink Protection dan konfigurasikan aturan Referer sesuai kebutuhan:
-
Referer Whitelist: Domain yang diizinkan mengakses sumber daya Anda. Masukkan satu per baris.
-
Referer Blacklist: Domain yang ditolak aksesnya. Masukkan satu per baris. Blacklist memiliki prioritas lebih tinggi daripada daftar putih.
-
Allow Empty Referer: Apakah akan mengizinkan permintaan tanpa header Referer, seperti akses langsung melalui browser.
-
Truncate QueryString: Apakah akan mengabaikan string kueri setelah
?dalam URL saat pencocokan. Aturan penguraian string kueri.
Aturan Referer mendukung wildcard:
Wildcard
Description
Example
*Mencocokkan nol atau lebih karakter.
*.example.commencocokkanhttp://www.example.comdanhttps://help.example.com.?Mencocokkan satu karakter.
http://www.aliyun?.commencocokkanhttp://www.aliyunc.com.Aturan Referer juga mendukung domain atau alamat IP dengan port, seperti
http://www.example.com:8080dan10.10.10.10:8080.CatatanPencocokan peka terhadap protokol. Aturan untuk
http://www.aliyun.comtidak mencocokkanhttps://www.aliyun.com. Tambahkan entri untuk HTTP dan HTTPS. -
-
Klik Save untuk menerapkan pengaturan.
Kasus penggunaan
Izinkan akses hanya dari website tepercaya
Izinkan hanya situs web tertentu untuk mengakses sumber daya OSS Anda sekaligus mengizinkan akses langsung melalui browser.
Langkah 1: Dapatkan Referer
Sebelum mengonfigurasi aturan, identifikasi Referer dari permintaan ke sumber daya OSS Anda:
-
Gunakan log waktu nyata OSS: Buka daftar Buckets. Di halaman bucket target, pilih , lalu temukan bidang
referer. Tanda hubung (-) menunjukkan permintaan dengan Referer kosong. -
Gunakan developer tools browser: Tekan F12 untuk membuka developer tools browser. Di panel Network, periksa header
Refererpada permintaan.
Langkah 2: Konfigurasikan aturan Referer
|
Parameter |
Value |
Description |
|
Referer Whitelist |
|
Tambahkan domain tepercaya untuk HTTP dan HTTPS. Sertakan domain konsol agar fungsi manajemen tetap berfungsi. |
|
Referer Blacklist |
Leave empty |
No sources to block. |
|
Allow Empty Referer |
Allow |
Mengizinkan akses langsung melalui browser dan akses dari klien yang menghilangkan Referer. |
|
Truncate QueryString |
Allow |
Mengabaikan string kueri URL untuk pencocokan fleksibel. |
Langkah 3: Verifikasi konfigurasi
# Simulasikan permintaan dari Referer yang ada di daftar putih (diharapkan berhasil)
curl -e "http://www.aliyun.com" http://your-bucket-name.oss-cn-hangzhou.aliyuncs.com/demo.txt
# Simulasikan permintaan dari Referer yang tidak ada di daftar putih (diharapkan mengembalikan AccessDenied)
curl -e "http://www.example.com" http://your-bucket-name.oss-cn-hangzhou.aliyuncs.com/demo.txt
# Simulasikan permintaan dengan Referer kosong (diharapkan berhasil)
curl http://your-bucket-name.oss-cn-hangzhou.aliyuncs.com/demo.txt
Blokir website berbahaya
Izinkan akses dari sebagian besar sumber tetapi blokir situs web berbahaya tertentu menggunakan blacklist.
Langkah 1: Identifikasi Referer
Buka daftar Buckets. Di halaman bucket target, pilih . Filter catatan lalu lintas abnormal dan periksa bidang referer untuk mengidentifikasi domain berbahaya.
Langkah 2: Konfigurasikan aturan Referer
|
Parameter |
Value |
Description |
|
Referer Whitelist |
|
Mengizinkan akses dari semua sumber. |
|
Referer Blacklist |
|
Tambahkan domain berbahaya. Gunakan wildcard untuk memblokir seluruh domain dan subdomainnya. |
|
Allow Empty Referer |
Allow |
Mengizinkan akses langsung dan klien sah berfungsi. |
|
Truncate QueryString |
Allow |
Mengabaikan string kueri URL untuk pencocokan fleksibel. |
Langkah 3: Verifikasi konfigurasi
# Simulasikan permintaan dari website normal (diharapkan berhasil)
curl -e "http://www.example.com" http://your-bucket-name.oss-cn-hangzhou.aliyuncs.com/demo.txt
# Simulasikan permintaan dari website yang diblokir (diharapkan mengembalikan AccessDenied)
curl -e "http://bad-site.example" http://your-bucket-name.oss-cn-hangzhou.aliyuncs.com/demo.txt
# Simulasikan permintaan dengan Referer kosong (diharapkan berhasil)
curl http://your-bucket-name.oss-cn-hangzhou.aliyuncs.com/demo.txt
Izinkan akses program mini WeChat
Program mini WeChat menggunakan format Referer tetap: https://servicewechat.com/{appid}/{version}/page-frame.html. Konfigurasikan aturan Anda agar sesuai dengan format ini.
Langkah 1: Identifikasi format Referer
Format Referer untuk program mini WeChat bersifat tetap dan dapat diprediksi, sehingga Anda dapat mengonfigurasinya langsung dengan menggunakan wildcard. Untuk mengonfirmasi format pasti, buka daftar Buckets dan periksa bidang referer di bagian bucket target Anda.
Langkah 2: Konfigurasikan aturan Referer
|
Parameter |
Value |
Description |
|
Referer Whitelist |
|
Wildcard mencakup semua AppID dan versi program mini. Sertakan domain konsol agar fungsi manajemen tetap berfungsi. |
|
Referer Blacklist |
Leave empty |
No sources to block. |
|
Allow Empty Referer |
Allow |
Beberapa program mini menghilangkan Referer. Mengizinkan Referer kosong memastikan kompatibilitas. |
|
Truncate QueryString |
Allow |
Mengabaikan string kueri URL untuk pencocokan fleksibel. |
Langkah 3: Verifikasi konfigurasi
# Simulasikan permintaan dari program mini WeChat (diharapkan berhasil)
curl -e "https://servicewechat.com/wx1234567890abcdef/1/page-frame.html" http://your-bucket-name.oss-cn-hangzhou.aliyuncs.com/demo.txt
# Simulasikan permintaan dari sumber lain (diharapkan mengembalikan AccessDenied)
curl -e "http://www.example.com" http://your-bucket-name.oss-cn-hangzhou.aliyuncs.com/demo.txt
# Simulasikan permintaan dengan Referer kosong (diharapkan berhasil)
curl http://your-bucket-name.oss-cn-hangzhou.aliyuncs.com/demo.txt
Izinkan akses konsol OSS
Setelah mengaktifkan Perlindungan hotlink, tambahkan domain konsol OSS ke daftar putih agar fungsi manajemen tetap berfungsi.
Langkah 1: Konfigurasikan aturan
|
Parameter |
Value |
Description |
|
Referer Whitelist |
|
Wildcard mencakup semua subdomain konsol OSS, memastikan pratinjau berfungsi di semua wilayah. |
|
Referer Blacklist |
Leave empty |
No sources to block. |
|
Allow Empty Referer |
Allow |
Mengizinkan akses langsung dan pratinjau konsol berfungsi. |
|
Truncate QueryString |
Allow |
Mengabaikan string kueri URL untuk pencocokan fleksibel. |
Langkah 2: Verifikasi konfigurasi
# Simulasikan akses dari konsol (diharapkan berhasil)
curl -e "https://oss.console.alibabacloud.com" http://your-bucket-name.oss-cn-hangzhou.aliyuncs.com/demo.txt
Anda juga dapat memverifikasi dengan mempratinjau dan mengunduh file dari konsol OSS.
Blokir akses langsung melalui URL
Nonaktifkan Referer kosong agar semua permintaan harus berasal dari situs web tertentu, mencegah akses langsung melalui URL.
Ini memblokir semua akses langsung, termasuk bookmark dan tautan email. Beberapa plugin browser, manajer unduhan, dan pemutar video mungkin tidak berfungsi karena sering kali menghilangkan Referer.
Langkah 1: Tentukan Referer
Identifikasi semua kombinasi domain dan protokol untuk situs web Anda guna mencakup semua skenario akses sah.
Langkah 2: Konfigurasikan aturan
|
Parameter |
Value |
Description |
|
Referer Whitelist |
|
Domain website Anda. Tambahkan semua kombinasi domain dan protokol yang diperlukan. Sertakan domain konsol agar fungsi management tetap berjalan. |
|
Referer Blacklist |
Biarkan kosong |
Tidak ada sumber yang perlu diblokir. |
|
Allow Empty Referer |
No |
Memblokir akses langsung dari address bar browser. |
|
Truncate QueryString |
Allow |
Mengabaikan query string URL untuk pencocokan yang lebih fleksibel. |
Langkah 3: Verifikasi konfigurasi
# Simulasikan permintaan dari website (diharapkan berhasil)
curl -e "http://www.example.com" http://your-bucket-name.oss-cn-hangzhou.aliyuncs.com/demo.txt
# Simulasikan akses langsung (diharapkan mengembalikan AccessDenied)
curl http://your-bucket-name.oss-cn-hangzhou.aliyuncs.com/demo.txt
# Simulasikan permintaan dari website lain (diharapkan mengembalikan AccessDenied)
curl -e "http://other.example" http://your-bucket-name.oss-cn-hangzhou.aliyuncs.com/demo.txt
Aturan penguraian string kueri
Jika Anda menonaktifkan opsi Truncate query string, OSS mengurai string kueri sebagai berikut:
|
Rule |
Description |
|
String kueri tidak di-decode URL. |
Untuk URL permintaan |
|
Parameter tidak peka huruf besar/kecil. |
Untuk URL permintaan |
|
Urutan parameter penting. |
Untuk URL permintaan |
Pertimbangan produksi
-
Risiko bypass cache CDN: Permintaan hotlinking mungkin mengenai node edge CDN dan dilayani dari cache, melewati Perlindungan hotlink OSS. Untuk mencegah hal ini, juga konfigurasikan aturan Perlindungan hotlink Referer yang sama pada CDN Anda.
-
Dampak Referrer-Policy browser: Browser mendukung header Referrer-Policy, yang mengontrol seberapa banyak informasi Referer yang dikirim dalam permintaan lintas asal. Kebijakan seperti
no-referrermenyebabkan browser menghilangkan Referer, dan OSS memperlakukan ini sebagai permintaan dengan Referer kosong. Pertimbangkan hal ini saat mengonfigurasi aturan. -
Kompatibilitas pemutaran video: Tag
videonative browser mengirim permintaan awal dengan Referer dan permintaan data media berikutnya dengan Referer kosong. Agar pemutaran video berfungsi, Anda harus mengizinkan akses untuk permintaan dengan Referer kosong.
Kuota dan batasan
-
akses anonim atau signed URL. Panggilan API yang ditandatangani dengan AccessKey (permintaan yang menyertakan header
Authorization) tidak dibatasi oleh aturan Perlindungan hotlink. -
Batas ukuran daftar: Gabungan daftar putih dan blacklist Referer tidak boleh melebihi 20 KB.
-
Lingkup: Perlindungan hotlink berlaku di tingkat bucket. Aturan per objek atau per direktori tidak didukung.
FAQ
Mengapa Perlindungan hotlink tidak berfungsi?
Periksa hal berikut secara berurutan:
-
Pemeriksaan lingkungan browser: Lingkungan tertentu, seperti program mini WeChat atau iframe, mungkin memodifikasi Referer. Gunakan log waktu nyata OSS atau developer tools browser untuk mengidentifikasi Referer aktual, lalu sesuaikan aturan Anda.
-
Format Referer: Pastikan entri Referer Anda menyertakan awalan protokol (
http://atauhttps://). Menghilangkannya menyebabkan aturan gagal. -
Cache Bypass CDN: Jika CDN Anda tidak memiliki perlindungan hotlink, permintaan dapat melewati validasi OSS. Konfigurasikan aturan perlindungan hotlink yang sesuai di CDN Anda.
Menangani error akses ditolak di program mini WeChat
Program mini WeChat menggunakan Referer tetap yang dimulai dengan https://servicewechat.com/. Tambahkan *servicewechat.com ke daftar putih Anda untuk mengizinkan akses semua program mini.
Menangani error akses ditolak untuk akses langsung
Akses langsung melalui browser mengirim Referer kosong. Jika Referer kosong tidak diizinkan, akses ditolak. Untuk mengizinkan akses langsung, ubah opsi Allow Empty Referer dalam pengaturan Perlindungan hotlink Anda menjadi Allow.
Menangani error InlineDataTooLarge
Gabungan daftar putih dan blacklist Referer melebihi batas 20 KB. Gunakan wildcard untuk menggabungkan aturan atau hapus entri yang tidak perlu.