شرح صفوف ومحتوى الفقرة
اجمع بين توكنات المزامنة CSRF وخاصية SameSite للكوكيز وفحص طريقة الطلب HTTP لتحقيق حماية دفاعية متعددة الطبقات.
- اعتمد على توكن المزامنة (
random_bytesمعhash_equals) كخط الدفاع الأساسي ضد CSRF. - اضبط كوكيز الجلسة بالخيار
"samesite" => "Lax"أو"Strict"كطبقة حماية إضافية من جهة المتصفح. - ارفض أي طلب غير مرسل بطريقة
POSTعلى مسارات تعديل البيانات برمز الحالة405 Method Not Allowed.
يتحقق حارس verifyCsrf() من عدم فراغ توكن الجلسة، وسلامة نوع النص، والتطابق الثابت زمنياً في ثلاثة أسطر.
| طبقة الحماية | الأداة في PHP | الخطر الذي تمنعه |
|---|---|---|
| CSPRNG Token Generation | bin2hex(random_bytes(32)) | Token guessing & brute-forcing |
| Timing-Safe Comparison | hash_equals($sess, $post) | Timing side-channel leaks |
| Token TTL & Rotation | $_SESSION["csrf_time"] | Stale or replayed tokens |
| Cookie Policy | samesite => "Lax" | Cross-site cookie attachment on POST |
PHP
<?php
function verifyCsrf(string $sessToken, mixed $postInput): bool {
if ($sessToken === '' || !is_string($postInput)) {
return false;
}
return hash_equals($sessToken, $postInput);
}
$ok = verifyCsrf("abc123def456", "abc123def456");
echo "Defense check: " . ($ok ? "PASSED" : "BLOCKED") . "\n";
خلاصة المعرفة ومحطة الانتقال
ملخص الدرس
حصاد الدرسمراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي
ماذا تعلّمت في هذا الدرس؟
اجمع بين توكنات المزامنة CSRF وخاصية SameSite للكوكيز وفحص طريقة الطلب HTTP لتحقيق حماية دفاعية متعددة الطبقات. اعتمد على توكن المزامنة (random_bytes مع hash_equals) كخط الدفاع الأساسي ضد CSRF. اضبط كوكيز الجلسة بالخيار "samesite" => "Lax" أو "Strict" كطبقة حماية إضافية من جهة المتصفح. ارفض أي طلب غير مرسل بطريقة POST على مسارات تعديل البيانات برمز الحالة 405 Method Not Allowed.