Serangan pemalsuan permintaan merentas tapak (CSRF) ialah sejenis serangan rangkaian di mana penyerang memperdaya pengguna untuk melakukan tindakan yang tidak diingini dalam aplikasi web mangsa.
Serangan CSRF mengeksploitasi fakta bahawa kebanyakan aplikasi web membenarkan permintaan dihantar antara halaman berbeza dalam nama domain yang sama. Penyerang mencipta halaman berniat jahat yang menghantar permintaan kepada aplikasi mangsa, mencetuskan tindakan yang tidak dibenarkan.
1. Gunakan token anti-CSRF:
// 生成令牌并存储在会话中 $_SESSION['csrf_token'] = bin2hex(random_bytes(32)); // 在表单中包含隐藏字段 <input type="hidden" name="csrf_token" value="<?php echo $_SESSION['csrf_token']; ?>"> // 验证提交的令牌 if (!isset($_POST['csrf_token']) || $_POST['csrf_token'] !== $_SESSION['csrf_token']) { // 令牌无效,拒绝请求 }
2. Gunakan Corak Token Penyegerak:
// 在首次加载页面时生成令牌并存储在 Cookie 中 setcookie('csrf_token', bin2hex(random_bytes(32)), time() + 3600, '/'); // 在表单提交时,将令牌作为 HTTP 头发送 $headers = getallheaders(); $csrf_token = $headers['X-CSRF-Token']; // 验证提交的令牌 if (!isset($csrf_token) || $csrf_token !== $_COOKIE['csrf_token']) { // 令牌无效,拒绝请求 }
Sebagai contoh, menyekat serangan CSRF pada pemindahan dana dalam dompet:
// 在用户加载转账页面时生成令牌 $transfer_token = bin2hex(random_bytes(32)); // 在表单中包含隐藏字段 <input type="hidden" name="transfer_token" value="<?php echo $transfer_token; ?>"> // 验证提交的令牌 if (!isset($_POST['transfer_token']) || $_POST['transfer_token'] !== $transfer_token) { // 令牌无效,拒绝转账请求 }
Dengan melaksanakan langkah-langkah ini, anda boleh mencegah serangan CSRF dan melindungi aplikasi PHP anda dengan berkesan.
Atas ialah kandungan terperinci Panduan Keselamatan Rangka Kerja PHP: Bagaimana Mencegah Serangan CSRF?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!