تأمين الروابط والهجمات الشائعة
المسار: تطوير نظام إدارة الأعراس ودعوات QR الوحدة: توليد وقراءة رموز QR
مدخل إلى الدرس: تأمين الروابط والهجمات الشائعة
تأمين الروابط والهجمات الشائعة — نظام إدارة الأعراس والمناسبات ودعوات QR | Next.js وPrisma | أديب الصلوي
طريقة الدراسة: اقرأ التعريف، تتبّع المثال في الشرح، نفّذه بنفسك، ثم اختبر النتيجة والحالات الاستثنائية قبل الانتقال.
أهداف هذا الدرس
- مراجعة ثغرات: التخمين، إعادة الإرسال، الغش بوقت.
- إضافة نافذة صلاحية للرابط وختم per-token secret.
- طريقة محو أو إبطال QR بعد الحفل بلحظة.
المخطط: خريطة هجمات على روابط الدعوة ودفاعاتها
flowchart LR
A["تخمين token"] --> D1["randomBytes(24) → 192-bit"]
B["تخمين sig"] --> D2["HMAC بمفتاح سري غير مفشى"]
C["إعادة إرسال same token"] --> D3["منع CheckIn مزدوج + نافذة صلاحية"]
E["فتح الرابط بعد الحفل"] --> D4["مقارنة تاريخ الحدث → 410"]
F["استنساخ صورة QR"] --> D5["طباعة بالاسم + التوقيع لكل ضيف"]
G["رفع sig طولية"] --> D6["timingSafeEqual متساوي الأمد"]
مثال
// تحقق "الزمن" في واجهة الدعوة والفحص معاً
export function invitationActive(eventDate: Date, now = new Date()) {
return now.getTime() < eventDate.getTime() + 24 * 60 * 60 * 1000;
}
// في POST /api/checkin بعد التوقيع:
const event = await prisma.event.findUnique({ where: { id: eventId } });
if (event && !invitationActive(event.date)) {
return NextResponse.json(
{ ok: false, error: "انتهت صلاحية دعوة هذا الحدث" },
{ status: 410 }
);
}نافذة انتهاء مضمونة
لا تجعل السريان عاماً عبر مناسبات متعددة: نربط صلاحية كل رابط بتاريخ الحدث، أي الرموز تموت تلقائياً بعد الحفل مهما تسربت.
تمرين تطبيقي: صمّم جدول revocations بسيطاً (guestId، reason، time) وأضف فحصه قبل قبول الحضور، ثم جرّب إبطال ضيف وإعادة مسح رمزه — يجب أن يرفض النظام.
أخطاء شائعة يجب تفاديها
- قبول رمز بعد الحدث بلا نافذة — يتسرب للحفلات المستقبلية.
- مقارنة sig نصاً بسيطاً يفتح استخراج زمني متداول.
- عدم إبطال سريع عند إلغاء دعوة — يظل الرمز يعمل حتى بقائه.
معجم مصطلحات الدرس
- نافذة صلاحية
- فترة زمنية يُقبل فيها الرمز؛ بعدها يُرفض.
- 410 Gone
- رمز HTTP يشير لانتهاء أبدية للموارد.
- إبطال
- قرار نظام يوقف شرعية رسم أو رمز معيّن.
مراجعة وتمرين تثبيت المهارة
اختبار سريع: اشرح بعبارتك معنى «تأمين الروابط والهجمات الشائعة»، ثم بيّن أين ستستخدمه داخل نظام تسجيل حضور دعوات مناسبة عبر رمز QR، وما الخطأ الذي يجب اختباره قبل الاعتماد على الحل.
تحدٍّ إضافي: غيّر شرطًا واحدًا في التطبيق، وتوقع النتيجة، ثم نفّذ الاختبار وفسّر الاختلاف.