انتقل إلى محتوى الدرس

Embedding CSRF Tokens in HTML Forms تضمين توكن CSRF كحقل مخفي في النماذج

احمِ النماذج والعمليات الحساسة من هجمات تزوير الطلبات عبر المواقع CSRF باستخدام random_bytes والمقارنة الثابتة زمنياً hash_equals.
1 صفوف تعليمية
PHP
0 مشاهدة

شرح صفوف ومحتوى الفقرة

الصف 1 شرح توضيحي

يجب أن يتضمن كل نموذج <form method="POST"> في تطبيقك حقل إدخال مخفياً يحمل قيمة توكن CSRF الخاص بالجلسة الحالية.

  • أدرج الحقل <input type="hidden" name="csrf_token" value="..."> داخل كل نموذج يُجري تغييراً على البيانات.
  • رمّز قيمة التوكن دائماً عبر htmlspecialchars($token, ENT_QUOTES, "UTF-8") كقاعدة ثابتة في قوالب العرض.
  • أنشئ دالة مساعدة مختصرة مثل csrfField() لتضمين الحقل المخفي بسهولة في جميع النماذج دون نسيان.

عندما يرسل المستخدم النموذج، يبعث المتصفح القيمة $_POST["csrf_token"] ضمن جسم الطلب جنباً إلى جنب مع باقي الحقول.

PHP
<?php
function csrfField(string $token): string {
    $safe = htmlspecialchars($token, ENT_QUOTES, 'UTF-8');
    return '<input type="hidden" name="csrf_token" value="' . $safe . '">';
}

$sampleToken = "a9f4c2e8b1d07365";
echo csrfField($sampleToken) . "\n";