Bahasa Indonesia

Video & subtitle · Pengunduh Media Langsung

Sejarah singkat kebijakan asal yang sama dan CORS di browser web

· Latar belakang

kor sejarah web keamanan

Asal mula browser berkembang menjadi akses HTTP lintas asal yang terkontrol
Ilustrasi vektor ToolAcre asli

Aturan yang menghentikan alat browser untuk membaca file situs lain secara bebas sudah ada sejak browser skrip paling awal. Posting ini menelusuri kebijakan asal yang sama, XMLHttpRequest dan standar CORS yang pada akhirnya memungkinkan pengambilan lintas situs terkontrol.

Mengapa browser menolak memberikan byte yang baru saja diterimanya ke tab Anda — efek sehari-hari dari aturan yang sudah berusia puluhan tahun

Browser dapat menampilkan file jarak jauh namun menolak memberikan isi respons tersebut ke halaman JavaScript. Kontradiksi yang tampak adalah pemisahan keamanan antara navigasi dan pembacaan lintas sumber terprogram.

Direct Media Downloader menghadapi aturan ini karena harus membaca potongan ke dalam Blob. Tautan Simpan Asli dapat berfungsi jika Pengambilan gagal karena mengikuti jalur browser yang berbeda. Penolakan ini melindungi cookie dan sumber daya intranet di tempat lain di browser, meskipun pengunduh khusus ini dengan sengaja menghilangkan kredensial dari panggilannya sendiri. Batas ini melindungi cookie dan halaman intranet yang tidak terkait di browser yang sama meskipun permintaan khusus ini menghilangkan kredensial.

Netscape, JavaScript dan aturan asal pertama — masalah keamanan yang mendorong kebijakan asal yang sama

Skrip web awal mengharuskan satu situs berhenti membaca halaman sensitif situs lain melalui akses sekitar pengunjung. Browser mengatur batas tersebut di sekitar asal.

Detail historis berbeda-beda di setiap implementasi, sehingga pewarisan praktis paling penting: skema, host, dan port menentukan kompartemen kepercayaan untuk sumber daya yang dapat dibaca skrip. Memperlakukan asal sebagai satu unit merupakan batasan teknis yang dapat diterapkan secara konsisten di seluruh dokumen, skrip, dan API jaringan. Pengelompokan asal memberikan unit yang dapat diterapkan sehingga mesin browser dapat diterapkan di seluruh dokumen, skrip, penyimpanan, dan respons jaringan. Model ini tidak sempurna tetapi memberikan pengembang default yang dapat diprediksi dan bukan otoritas ambien yang tidak dibatasi.

XMLHttpRequest dan web yang dibatasi - bagaimana permintaan bernaskah mewarisi aturan dan mengapa mashup mengalami kesulitan

XMLHttpRequest mengaktifkan latar belakang HTTP berfungsi tetapi tetap mempertahankan batasan asal. Hal ini membuat aplikasi situs yang sama berguna sementara mashup lintas situs memerlukan kerja sama atau perantara server.

Penimpaan klien universal akan menghancurkan perlindungan. Server yang memiliki target memerlukan cara untuk mengungkapkan asal luar mana yang dapat membaca respons yang dipilih. Relai server menjadi solusi umum, namun mengalihkan risiko kepercayaan, bandwidth, dan pemalsuan permintaan ke infrastruktur di luar kotak pasir browser. Solusi relai mengalihkan risiko bandwidth, kepercayaan, dan pemalsuan permintaan sisi server ke luar sandbox klien, bukan menghilangkan kebijakan tersebut. Perantara tersebut memerlukan kontrol keamanan, privasi, dan penyalahgunaan mereka sendiri ketika mereka sengaja dikerahkan.

Standar CORS — bagaimana header Access-Control memungkinkan server ikut serta dalam pembacaan lintas asal tanpa melonggarkan default

CORS menyediakan kerja sama tersebut melalui header respons HTTP yang ditafsirkan oleh browser. `Access-Control-Allow-Origin` dapat mengotorisasi asal permintaan atau, dalam kasus bebas kredensial yang sesuai, audiens yang lebih luas.

Mekanisme ini tidak menonaktifkan kebijakan asal yang sama secara global. Ini memberikan akses baca terbatas ke tanggapan yang hostnya memilih untuk memaparkannya di bawah protokol. Hasil pra-penerbangan dapat di-cache oleh browser berdasarkan aturan protokol, sehingga audit tidak boleh menyimpulkan “tidak pernah terjadi pemeriksaan kebijakan” dari satu jejak hangat. Hal ini mempertahankan isolasi default sekaligus memungkinkan pemilik sumber daya untuk menerbitkan pengecualian yang disengaja untuk pemanggil dan metode yang dipilih.

Pra-penerbangan, permintaan sederhana, dan tanggapan yang tidak jelas — kosakata yang menjelaskan sebagian besar kegagalan pengunduhan

Beberapa permintaan lintas asal cukup sederhana sehingga tidak memerlukan penerbangan awal; yang lain terlebih dahulu mengirim OPTIONS untuk menanyakan apakah metode dan header diizinkan. Preflight adalah negosiasi, bukan transfer media yang sebenarnya.

Respons buram muncul dari mode tanpa kors dan menyembunyikan status, header, dan isi dari skrip. ToolAcre tidak memilih mode tersebut karena isi yang tidak dapat dibaca tidak dapat menjadi Blob yang dapat disimpan. Kesalahan CORS mungkin terjadi bersamaan dengan permintaan sisi server yang berhasil, memperkuat alasan kegagalan aplikasi tidak berarti aplikasi asal tidak menerima apa pun. Keputusan pra-penerbangan yang disimpan dalam cache dapat mengubah apa yang tampak dalam satu jejak hangat, jadi tidak adanya OPTIONS dalam sejarah bukanlah bukti bahwa negosiasi tidak pernah ada.

Apa arti CORS bagi pengunduh khusus browser — tuan rumah yang memutuskan, alat tidak dapat mengambil alih, dan kejujuran tentang hal itu adalah respons yang tepat

Untuk pengunduh ini, host memutuskan apakah respons HEAD dan GET dapat dibaca. ToolAcre tidak dapat melampirkan header respons izin-asal atas nama host, dan tidak akan menyampaikan isi melalui asal-usulnya sendiri.

Kesalahan ini menggabungkan CORS dan kemungkinan jaringan karena Fetch sengaja menyembunyikan informasi terperinci dalam beberapa kegagalan. DevTools mungkin mengungkapkan lebih banyak kepada pengunjung daripada yang diterima kode aplikasi. Operator host harus hanya mengotorisasi asal, metode, dan header yang diinginkan, lalu memverifikasi respons produksi yang sebenarnya, bukan mengandalkan maksud konfigurasi lokal. Pembacaan yang diblokir mungkin terjadi bersamaan dengan server yang menerima permintaan, itulah sebabnya antarmuka tidak pernah menyamakan kegagalan aplikasi dengan tidak adanya kontak.

Kesimpulan: aturan yang melindungi Anda bahkan ketika hal itu mengganggu Anda — cara kerja Pengunduh Media Langsung di dalamnya, bukan di sekitarnya

Aturan ini melindungi pengguna bahkan ketika hal itu menggagalkan transfer file yang sah. Host yang ingin aplikasi browser membaca media publik dapat mengonfigurasi respons CORS yang sesuai; salah satu yang tetap tidak dapat diakses melalui jalur skrip ini.

Direct Media Downloader bekerja dalam model tersebut: memvalidasi secara lokal, meminta secara terbuka, menjelaskan penolakan, dan menyarankan penyimpanan asli jika diperlukan. Itu tidak mengubah batas keamanan browser menjadi masalah bypass. Memahami bahwa riwayat mengubah kesalahan dari permusuhan browser yang sewenang-wenang menjadi konsekuensi nyata dari model pembacaan lintas situs yang ditolak secara default. Pemilik asal harus menguji header produksi yang tepat untuk metode yang diinginkan daripada hanya mengandalkan konfigurasi dasbor.