شرح صفوف ومحتوى الفقرة
تعتمد هجمات تزوير الطلبات عبر المواقع (CSRF) على خداع متصفح المستخدم المسجل دخوله لإرسال طلب تغييري غير مقصود (كتغيير البريد أو تحويل رصيد) إلى تطبيق PHP الخاص بك.
- ترفق المتصفحات كوكيز الجلسة (
PHPSESSID) تلقائياً مع الطلبات المرسلة للموقع ما لم تُضبط طبقات الحماية. - بدون توكن مزامنة سري مرتبط بالجلسة، لا يستطيع خادم PHP التفرقة بين نموذج أرسله المستخدم بإرادته ونموذج مخفي أُرسل من موقع خارجي.
- لا تنفذ أبداً أي عمليات تغيير بيانات (إضافة أو تعديل أو حذف أو خروج) عبر طلبات
GET.
يُعد فرض طريقة POST الشرط الأول للحماية من CSRF، لأن روابط GET يمكن تشغيلها بمجرد وضعها داخل وسم صورة <img src="...">.
PHP
<?php
$method = "GET";
$action = "delete_account";
// NEVER allow state-changing actions via GET!
if ($method !== "POST") {
http_response_code(405);
echo "405 Method Not Allowed: Use POST for $action\n";
}