شرح صفوف ومحتوى الفقرة
تساعد إضافة طابع زمني لانتهاء الصلاحية (TTL) وتدوير التوكن بعد العمليات الحساسة على تقليص نافذة الخطر إلى الحد الأدنى.
- احفظ وقت الإنشاء
$_SESSION["csrf_time"] = time()مع التوكن، وارفض التوكنات التي يتجاوز عمرها مدة الصلاحية المحددة (مثل 3600 ثانية). - أعد توليد
$_SESSION["csrf_token"]فور تسجيل دخول المستخدم أو خروجه أو تغيير كلمة مروره. - فضّل التوكن المرتبط بالجلسة مع وقت صلاحية على التوكن أحادي الاستخدام الصارم لتفادي تعطل النماذج عند فتح المستخدم لعدة تبويبات.
عندما يتجاوز الفارق الزمني $now - $_SESSION["csrf_time"] حد 3600 ثانية، يُرفض التوكن القديم ويُستبدل بتوكن عشوائي جديد.
PHP
<?php
$now = 1762550000;
$_SESSION['csrf_token'] = "9a8b7c6d5e4f";
$_SESSION['csrf_time'] = $now - 7200; // Created 2 hours ago
$ttl = 3600;
$isExpired = ($now - $_SESSION['csrf_time']) > $ttl;
if ($isExpired) {
$_SESSION['csrf_token'] = bin2hex(random_bytes(16));
$_SESSION['csrf_time'] = $now;
echo "Token expired (> 3600s) -> Rotated!\n";
}