Editor PHP Zimo membawakan anda strategi perlindungan PHP untuk mengatasi kesukaran CSRF. CSRF (pemalsuan permintaan merentas tapak) ialah kaedah serangan rangkaian biasa Untuk mencegah serangan sedemikian dengan berkesan, pembangun PHP perlu mengambil beberapa langkah, seperti menggunakan token CSRF, mengesahkan Perujuk HTTP, pengesahan berganda dan kaedah lain untuk memastikan. bahawa tapak web keselamatan Data. Artikel ini akan memperkenalkan strategi perlindungan ini secara terperinci untuk membantu anda mewujudkan sistem perlindungan PHP yang mudah untuk melindungi tapak web anda daripada ancaman serangan CSRF.
Pengepala Perujuk ialah pengepala permintaan Http yang mengandungi URL sumber permintaan. Pelayan boleh menyemak Pengepala Perujuk untuk menentukan sama ada permintaan itu datang daripada sumber yang sah. Jika Pengepala Perujuk tidak wujud atau menunjuk kepada sumber yang tidak sah, ia dianggap sebagai serangan CSRF dan permintaan akan ditolak.
SameSite Cookie ialah atribut kuki baharu yang boleh digunakan untuk mengehadkan skop kuki. Kuki SameSite boleh ditetapkan kepada "Strict", "Lax", atau "None". Kuki akan dihantar pada permintaan merentas tapak hanya jika kuki SameSite ditetapkan kepada "Ketat".
Mod token penyerahan berganda ialah kaedah klasik untuk mencegah serangan CSRF. Dalam mod token dwi-serahkan, pelayan menjana token rawak dengan setiap permintaan dan menyimpan token dalam medan borang tersembunyi. Apabila pengguna menyerahkan borang, pelayan mengesahkan sama ada token dalam medan borang tersembunyi adalah konsisten dengan token dalam sesi Jika ia tidak konsisten, ia menganggap serangan CSRF dan menolak permintaan.
Berikut ialah sekeping kod PHP yang menggunakan Token CSRF untuk menghalang serangan CSRF:
<?php // 生成 CSRF Token $csrf_token = bin2hex(random_bytes(32)); // 将 CSRF Token 存储在会话中 $_SESSioN["csrf_token"] = $csrf_token; ?> <fORM action="submit.php" method="post"> <input type="hidden" name="csrf_token" value="<?php echo $csrf_token; ?>"> <!-- 表单其他字段 --> <input type="submit" value="提交"> </form>
Dalam fail submit.php
, Token CSRF boleh disahkan seperti berikut:
<?php // 获取请求中的 CSRF Token $csrf_token = $_POST["csrf_token"]; // 获取会话中的 CSRF Token $session_csrf_token = $_SESSION["csrf_token"]; // 比较两个 CSRF Token if ($csrf_token !== $session_csrf_token) { // 认为是 CSRF 攻击,拒绝请求 die("CSRF attack detected!"); } // 处理表单提交 // ...
boleh menghalang serangan CSRF dengan berkesan dan melindungi keselamatan aplikasi WEB.
Atas ialah kandungan terperinci Mengatasi CSRF: Strategi Perlindungan PHP Foolproof. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!