Rumah > Artikel > pembangunan bahagian belakang > Bagaimana PHP bertahan terhadap serangan CSRF
Cara menggunakan PHP untuk mempertahankan diri daripada serangan pemalsuan permintaan merentas tapak (CSRF)
Dengan pembangunan dan populariti aplikasi web, isu keselamatan rangkaian menjadi semakin penting. Serangan pemalsuan permintaan silang tapak (CSRF) telah menjadi salah satu kaedah serangan biasa. Serangan CSRF merujuk kepada penyerang yang melakukan beberapa operasi berniat jahat dengan menyamar sebagai permintaan daripada pengguna yang sah, seperti memindahkan wang, menukar kata laluan, dsb. tanpa disedari oleh pengguna. Untuk melindungi pengguna dan aplikasi web, pembangun perlu mengambil langkah untuk mempertahankan diri daripada serangan sedemikian. Artikel ini akan memperkenalkan cara menggunakan PHP untuk mempertahankan diri daripada serangan CSRF.
Berikut ialah contoh kod menggunakan token:
// 生成令牌 function generateToken() { $token = bin2hex(random_bytes(32)); $_SESSION['csrf_token'] = $token; return $token; } // 验证令牌 function verifyToken($token) { if(isset($_SESSION['csrf_token']) && $_SESSION['csrf_token'] === $token) { return true; } return false; } // 在表单中添加令牌字段 function addTokenField() { $token = generateToken(); echo '<input type="hidden" name="csrf_token" value="'.$token.'">'; }
Contoh kod untuk mengesahkan pengepala Perujuk:
function verifyReferer() { if(isset($_SERVER['HTTP_REFERER']) && strpos($_SERVER['HTTP_REFERER'], $_SERVER['HTTP_HOST']) !== false) { return true; } return false; }
Contoh kod untuk mengesahkan pengepala Asal:
function verifyOrigin() { if(isset($_SERVER['HTTP_ORIGIN']) && $_SERVER['HTTP_ORIGIN'] === 'https://www.example.com') { return true; } return false; }
Contoh kod untuk menetapkan sifat kuki:
session_set_cookie_params([ 'lifetime' => 86400, // Cookie的有效期为一天 'path' => '/', 'domain' => '.example.com', 'secure' => true, // 仅在HTTPS连接下传输 'httponly' => true // 仅通过HTTP协议访问 ]); session_start();
Semasa proses log masuk, kami boleh menjana token log masuk dan menyimpannya di bahagian pelayan dan dalam Sesi. Dalam setiap permintaan log masuk, kami perlu mengesahkan kesahihan token untuk memastikan token hanya boleh diperoleh melalui proses log masuk.
Semasa proses log keluar, kami perlu memusnahkan data Sesi yang berkaitan dengan pengguna dan memadamkan ID Sesi. Ini menghalang penyerang daripada mencuri ID Sesi untuk menyamar sebagai pengguna.
Ringkasan:
Serangan CSRF ialah masalah keselamatan rangkaian biasa, tetapi terdapat beberapa langkah yang boleh kita ambil untuk mempertahankan diri daripada serangan ini. Artikel ini memperkenalkan beberapa kaedah menggunakan PHP untuk mempertahankan diri daripada serangan CSRF, termasuk menjana dan mengesahkan token, mengesahkan sumber permintaan, menetapkan atribut kuki dan memberi perhatian kepada keselamatan log masuk dan log keluar. Melalui gabungan penggunaan kaedah ini, kami boleh melindungi keselamatan aplikasi web dan pengguna dengan berkesan.
Atas ialah kandungan terperinci Bagaimana PHP bertahan terhadap serangan CSRF. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!