Pemalsuan permintaan merentas tapak (CSRF) ialah sejenis serangan di mana tapak web berniat jahat menghantar permintaan ke tapak web yang sah bagi pihak pengguna yang disahkan. Ini boleh membenarkan penyerang untuk melaksanakan tindakan yang tidak dimaksudkan oleh pengguna, seperti menukar kata laluan mereka atau membuat pembelian palsu.
Terdapat beberapa teknik yang boleh digunakan untuk mencegah Serangan CSRF dalam PHP, termasuk:
1. Memerlukan Pengesahan dalam Parameter GET dan POST, Bukan Sahaja Kuki
Langkah ini mengehadkan keupayaan tapak web berniat jahat untuk menghantar permintaan bagi pihak pengguna yang disahkan dengan memerlukan token pengesahan yang sah untuk hadir dalam kedua-dua GET dan POST parameter permintaan.
2. Menyemak Pengepala Perujuk HTTP
Pengepala Perujuk HTTP mengandungi URL halaman yang merujuk kepada halaman semasa. Dengan menyemak pengepala Perujuk, adalah mungkin untuk mengesan sama ada permintaan datang daripada sumber yang sah atau daripada tapak web yang berniat jahat.
Mengesahkan GET dan POST Parameter
Dalam Kohana, anda boleh menggunakan peraturan Valid::not_empty() untuk mengesahkan parameter GET dan POST untuk memastikan bahawa ia tidak kosong. Contohnya:
$rules = array( 'get_param' => array( array('not_empty') ), 'post_param' => array( array('not_empty') ) ); $validation = Validation::factory($request->query() + $request->post()) ->rules($rules); if (!$validation->check()) { // CSRF attack detected }
Menyemak Pengepala Perujuk HTTP
Dalam Kohana, anda boleh menggunakan kaedah Request::referrer() untuk mendapatkan URL rujukan muka surat. Untuk menyemak sama ada pengepala Perujuk adalah sah, anda boleh membandingkannya dengan nilai yang dijangkakan:
$referrer = $request->referrer(); if ($referrer !== $expected_referrer) { // CSRF attack detected }
Menggunakan Token Satu Kali
Cara paling berkesan untuk mencegah serangan CSRF adalah dengan menggunakan token sekali sahaja. Token ini dijana pada pelayan dan disimpan dalam sesi. Apabila pengguna menyerahkan borang, token disertakan dalam permintaan. Pelayan kemudian mengesahkan token dan, jika ia sah, melengkapkan permintaan.
Untuk melaksanakan token sekali sahaja dalam Kohana, anda boleh menggunakan langkah berikut:
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencegah Serangan Pemalsuan Permintaan Merentas Tapak (CSRF) dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!