Abstrak: Serangan CSRF dalam fungsi PHP boleh dipertahankan dengan menggunakan token: hasilkan token unik dan simpannya dalam sesi atau kuki. Sertakan token sebagai medan tersembunyi dalam borang yang dilindungi. Semasa memproses penyerahan borang, sahkan bahawa token sepadan dengan token yang disimpan. Jika tiada padanan, permintaan ditolak.
Cara mempertahankan daripada serangan CSRF dalam fungsi PHP
Pemalsuan permintaan merentas tapak (CSRF) ialah teknik berniat jahat yang membolehkan penyerang menghantar permintaan palsu melalui penyemak imbas mangsa. Untuk aplikasi PHP, ini boleh membenarkan penyerang melakukan operasi tanpa kebenaran menggunakan fungsi tertentu.
Kes praktikal:
Andaikan anda mempunyai aplikasi PHP yang mengandungi fungsi change_password
。该函数使用以下代码:
<?php if (isset($_POST['password'])) { $password = $_POST['password']; // 更新数据库中的密码... } ?>
此代码容易受到 CSRF 攻击,因为攻击者可以向受害者的浏览器发送一个 POST 请求,其中包含他们希望用于受害者密码的 password
<?php session_start(); // 生成令牌并将其存储在会话中 $_SESSION['csrf_token'] = bin2hex(random_bytes(32)); ?>
kata laluan
yang mereka ingin gunakan untuk kata laluan mangsa . Serangan ini boleh dilakukan melalui e-mel palsu, tapak web berniat jahat atau kaedah lain. Langkah pertahanan:
Untuk mempertahankan diri daripada serangan CSRF, satu mekanisme perlu dilaksanakan untuk mengesahkan kesahihan permintaan. Satu kaedah biasa ialah menggunakan token.<form action="change_password.php" method="post"> <input type="hidden" name="csrf_token" value="<?php echo $_SESSION['csrf_token']; ?>" /> <!-- 其他表单字段 --> </form>
<?php if (!isset($_POST['csrf_token']) || $_POST['csrf_token'] !== $_SESSION['csrf_token']) { // 令牌验证失败,拒绝请求 exit('Invalid request'); } ?>
rrreee
Dengan melaksanakan pertahanan ini, anda boleh mengurangkan risiko serangan CSRF pada aplikasi PHP anda. 🎜Atas ialah kandungan terperinci Bagaimana untuk melindungi fungsi PHP daripada serangan CSRF?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!