Bahasa Melayu

Video & sari kata · Pemuat Turun Media Langsung

Sejarah ringkas dasar asal yang sama dan CORS dalam pelayar web

· Latar belakang

kor web-sejarah keselamatan

Asal-usul pelayar awal berkembang menjadi akses HTTP asal silang terkawal
Ilustrasi vektor ToolAcre asal

Peraturan yang menghalang alat pelayar daripada membaca fail tapak lain secara bebas bermula sejak pelayar skrip terawal. Siaran ini mengesan dasar asal yang sama, XMLHttpRequest dan standard CORS yang akhirnya membolehkan pengambilan merentas tapak terkawal.

Mengapa pelayar enggan menyerahkan tab anda sendiri bait yang baru diterimanya — kesan harian peraturan yang berusia beberapa dekad

Pelayar boleh memaparkan fail jauh namun enggan memberikan badan respons itu ke halaman JavaScript. Percanggahan yang nyata ialah pemisahan keselamatan antara navigasi dan bacaan silang asal terprogram.

Direct Media Downloader menemui peraturan kerana ia mesti membaca ketulan ke dalam Blob. Pautan Simpan Asli sebagai boleh berfungsi apabila Fetch gagal kerana ia mengikuti laluan pelayar yang berbeza. Penolakan itu melindungi kuki dan sumber intranet di tempat lain dalam pelayar, walaupun pemuat turun khusus ini sengaja menghilangkan kelayakan daripada panggilannya sendiri. Sempadan melindungi kuki yang tidak berkaitan dan halaman intranet dalam pelayar yang sama walaupun permintaan khusus ini menghilangkan bukti kelayakan.

Netscape, JavaScript dan peraturan asal pertama — masalah keselamatan yang mendorong dasar asal yang sama

Skrip web awal menjadikannya perlu untuk menghentikan satu tapak daripada membaca halaman sensitif tapak lain melalui akses ambien pelawat. Pelayar mengatur sempadan itu di sekeliling asal.

Butiran sejarah berbeza-beza mengikut pelaksanaan, jadi warisan praktikal paling penting: skema, hos dan port menentukan petak amanah untuk sumber boleh dibaca skrip. Menganggap asal sebagai satu unit ialah sempadan kejuruteraan yang boleh dikuatkuasakan secara konsisten merentas dokumen, skrip dan API rangkaian. Pengumpulan asal menyediakan unit boleh dikuatkuasakan yang boleh digunakan oleh enjin pelayar merentas dokumen, skrip, storan dan respons rangkaian. Model ini tidak sempurna tetapi memberikan pembangun lalai yang boleh diramal dan bukannya kuasa ambien yang tidak terhad.

XMLHttpRequest dan web berdinding — cara permintaan berskrip mewarisi peraturan dan sebab mashup bergelut

XMLHttpRequest mendayakan latar belakang HTTP berfungsi tetapi mengekalkan sekatan asal. Itu menjadikan aplikasi tapak sama berguna manakala mashup merentas tapak memerlukan kerjasama atau pengantara pelayan.

Penolakan pelanggan universal akan memusnahkan perlindungan. Pelayan yang memiliki sasaran memerlukan cara untuk menyatakan asal luar yang boleh membaca respons yang dipilih. Geganti pelayan menjadi penyelesaian biasa, tetapi ia mengalihkan kepercayaan, lebar jalur dan risiko pemalsuan permintaan kepada infrastruktur di luar kotak pasir pelayar. Penyelesaian geganti mengalihkan lebar jalur, kepercayaan dan risiko pemalsuan permintaan sebelah pelayan di luar kotak pasir pelanggan dan bukannya menghapuskan dasar. Pengantara tersebut memerlukan kawalan keselamatan, privasi dan penyalahgunaan mereka sendiri apabila mereka digunakan secara sengaja.

Piawaian CORS — cara pengepala Kawalan Akses membenarkan pelayan mengikut serta dalam bacaan silang asal tanpa melonggarkan lalai

CORS membekalkan kerjasama itu melalui HTTP pengepala respons yang ditafsirkan oleh pelayar. `Access-Control-Allow-Origin` boleh membenarkan asal yang meminta atau, dalam kes tanpa kelayakan yang sesuai, khalayak yang lebih luas.

Mekanisme ini tidak melumpuhkan dasar asal yang sama secara global. Ia memberikan akses baca berskop kepada respons yang hosnya memilih untuk mendedahkannya di bawah protokol. Keputusan prapenerbangan boleh dicache oleh pelayar di bawah peraturan protokol, jadi audit tidak seharusnya membuat kesimpulan "tiada semakan dasar pernah berlaku" daripada satu jejak hangat. Ini mengekalkan pengasingan lalai sambil membenarkan pemilik sumber menerbitkan pengecualian yang disengajakan untuk pemanggil dan kaedah yang dipilih.

Prapenerbangan, permintaan ringkas dan respons legap — perbendaharaan kata yang menerangkan kebanyakan kegagalan muat turun

Beberapa permintaan silang asal cukup mudah untuk tidak memerlukan prapenerbangan; yang lain mula-mula menghantar OPTIONS untuk bertanya sama ada kaedah dan pengepala dibenarkan. Prapenerbangan adalah rundingan, bukan pemindahan media sebenar.

Respons legap timbul daripada mod tanpa cors dan menyembunyikan status, pengepala dan kandungan daripada skrip. ToolAcre tidak memilih mod itu kerana badan yang tidak boleh dibaca tidak boleh menjadi Blob boleh disimpan yang dimaksudkan. Ralat CORS mungkin wujud bersama dengan permintaan pihak pelayan yang berjaya, mengukuhkan mengapa kegagalan aplikasi tidak bermakna asal tidak menerima apa-apa. Keputusan pra-penerbangan yang dicache boleh mengubah apa yang muncul dalam satu jejak hangat, jadi ketiadaan sejarah OPTIONS bukanlah bukti bahawa rundingan tidak pernah wujud.

Maksud CORS untuk pemuat turun pelayar sahaja — hos membuat keputusan, alat itu tidak boleh menimpa dan kejujuran tentang itu adalah respons yang betul

Untuk pemuat turun ini, hos memutuskan sama ada respons HEAD dan GET boleh dibaca. ToolAcre tidak boleh melampirkan pengepala respons asal-asal bagi pihak hos dan ia tidak akan menyampaikan badan melalui asalnya sendiri.

Ralat menggabungkan CORS dan kemungkinan rangkaian kerana Fetch sengaja menahan maklumat terperinci dalam beberapa kegagalan. DevTools mungkin mendedahkan lebih banyak kepada pelawat daripada kod aplikasi yang diterima. Pengendali hos hendaklah membenarkan sahaja asal usul, kaedah dan pengepala yang dimaksudkan dan kemudian mengesahkan respons pengeluaran tepat mereka dan bukannya bergantung pada niat konfigurasi setempat. Bacaan yang disekat mungkin wujud bersama pelayan yang menerima permintaan, itulah sebabnya antara muka tidak pernah menyamakan kegagalan aplikasi tanpa kenalan.

Bawa pulang: peraturan yang melindungi anda walaupun ia menjengkelkan anda — cara Muat Turun Media Langsung berfungsi di dalamnya dan bukannya di sekelilingnya

Peraturan ini melindungi pengguna walaupun ia mengecewakan pemindahan fail yang sah. Hos yang mahu aplikasi pelayar membaca media awam boleh mengkonfigurasi CORS respons yang sesuai; satu yang tidak kekal tidak boleh diakses melalui laluan skrip ini.

Direct Media Downloader berfungsi dalam model tersebut: sahkan secara setempat, minta secara terbuka, terangkan penolakan dan cadangkan simpanan asli jika sesuai. Ia tidak mengubah sempadan keselamatan pelayar menjadi masalah pintasan. Memahami bahawa sejarah menukar ralat daripada permusuhan pelayar sewenang-wenangnya kepada akibat yang boleh dilihat daripada model baca rentas tapak penafian lalai. Pemilik asal harus menguji pengepala pengeluaran yang tepat untuk kaedah yang dimaksudkan dan bukannya bergantung semata-mata pada konfigurasi papan pemuka.