Dengan perkembangan Internet, aplikasi Web telah menjadi semakin biasa, dan PHP, sebagai bahasa pengaturcaraan Web yang popular, digunakan secara meluas dalam pembangunan laman web. Walau bagaimanapun, satu isu keselamatan yang perlu diberi perhatian oleh pembangun ialah Dasar Asal Sama. Dasar asal yang sama ialah ukuran keselamatan pelayar web yang mengehadkan interaksi antara skrip daripada asal yang berbeza. Artikel ini akan memperkenalkan cara untuk mengelakkan isu dasar asal yang sama dalam pembangunan bahasa PHP.
1. Apakah dasar asal yang sama?
Dasar asal yang sama ialah sekatan keselamatan yang dilaksanakan oleh penyemak imbas web yang menyekat akses antara skrip daripada sumber yang berbeza (iaitu, protokol yang berbeza, nama domain atau nombor port). Dasar asal yang sama sering digunakan untuk menghalang isu keselamatan seperti skrip silang tapak (XSS) dan pemalsuan permintaan merentas tapak (CSRF). Dasar asal yang sama menghalang serangan daripada tapak web berniat jahat sambil melindungi privasi dan keselamatan pengguna.
2. Bagaimana untuk mengelakkan isu dasar yang sama?
JSONP (JSON dengan Padding) ialah cara untuk memintas dasar asal yang sama dan boleh meminta data merentas domain. JSONP secara dinamik mencipta teg
callbackFunction({"name":"Zhang San","age":25});
Pelanggan memproses data JSON ini dengan memanggil fungsi callbackFunction untuk mencapai tujuan meminta data merentas domain. Perlu diingatkan bahawa JSONP hanya menyokong permintaan GET, jadi JSONP tidak boleh digunakan untuk permintaan dengan keselamatan yang lebih tinggi.
CORS (Cross-Origin Resource Sharing) ialah penyelesaian untuk permintaan merentas domain dengan menambahkan Access-Control-Allow pada pengepala respons -Medan Asal membenarkan nama domain yang ditentukan untuk mengakses sumber. Dalam pembangunan bahasa PHP, CORS boleh dilaksanakan dengan menetapkan pengepala respons Kod sampel adalah seperti berikut:
header('Access-Control-Allow-Origin: http://www.example.com') ;/ /Nyatakan nama domain yang dibenarkan untuk diakses
header('Access-Control-Allow-Methods: GET, POST, PUT');//Nyatakan kaedah HTTP yang dibenarkan
Apabila menggunakan CORS, sila ambil perhatian bahawa anda perlu Konfigurasi dilakukan pada bahagian pelayan dan memerlukan sokongan pelayar. Selain itu, CORS juga mempunyai beberapa isu keselamatan, seperti membocorkan maklumat pengguna.
Menggunakan pelayan proksi ialah penyelesaian permintaan merentas domain biasa, iaitu, dengan memajukan permintaan di bahagian pelayan, data permintaan merentas domain tercapai. Dalam pembangunan bahasa PHP, anda boleh mencapai tujuan meminta data merentas domain dengan menghantar permintaan kepada pelayan proksi dan kemudian mengembalikan data yang dikembalikan oleh pelayan kepada klien. Perlu diingatkan bahawa menghantar permintaan melalui pelayan proksi akan meningkatkan beban pada pelayan, dan pengesahan keselamatan diperlukan untuk memastikan keselamatan data.
Menggunakan IFrame untuk melaksanakan permintaan merentas domain juga merupakan penyelesaian, iaitu, membenamkan data yang perlu diminta ke dalam IFrame, dan kemudian mendapatkan data daripada pelayan melalui IFrame . Dalam pembangunan bahasa PHP, anda boleh mencapai tujuan meminta data merentas domain dengan membenamkan alamat yang menghala ke pelayan ke dalam IFrame dan kemudian mendapatkan data dalam IFrame. Perlu diingat bahawa menggunakan IFrame memerlukan perhatian terhadap isu keselamatan, seperti skrip merentas tapak dan clickjacking.
5. Ringkasan
Satu perkara yang perlu diberi perhatian oleh pembangun ialah adalah perlu dan penting untuk mengelakkan isu dasar yang sama dalam pembangunan bahasa PHP. Pembangun boleh memilih penyelesaian yang sesuai berdasarkan situasi sebenar, seperti menggunakan JSONP, CORS, proksi, IFrame, dll., untuk mencapai data permintaan merentas domain yang berkesan. Semasa melaksanakan permintaan data merentas domain, anda juga perlu memberi perhatian kepada keselamatan aplikasi untuk melindungi privasi pengguna dan keselamatan data.
Atas ialah kandungan terperinci Bagaimana untuk mengelakkan isu dasar asal yang sama dalam pembangunan bahasa PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!