تطبيقات الدفع والمحافظ الإلكترونية أهداف عالية القيمة: المال يجذب المهاجمين، وثقة المستخدم تنهار من حادثة واحدة. الأمان هنا ليس ميزة إضافية بل شرط وجود. هذه قائمة تحقق عملية مبنية على ما نطبّقه فعلًا، مرتّبة من البنية التحتية إلى منطق التطبيق.
تشفير النقل والتخزين
أساس لا يُتجاوز: كل اتصال عبر TLS حديث، وكل بيانات حسّاسة مشفّرة في حالة السكون.
- افرض HTTPS في كل مكان (HSTS) وعطّل البروتوكولات والشيفرات القديمة.
- لا تخزّن بيانات البطاقة الكاملة مطلقًا — اعتمد على مزوّد دفع مطابق لـ PCI DSS واحتفظ بـ tokens لا بأرقام البطاقات.
- شفّر البيانات الحسّاسة في قاعدة البيانات، واحفظ المفاتيح في خدمة إدارة مفاتيح لا في الكود.
- ثبّت الشهادة (certificate pinning) في تطبيق الموبايل لمنع اعتراض الاتصال عبر وسيط.
المصادقة القوية
أغلب الاختراقات تبدأ بحساب مخترَق، لا بثغرة برمجية معقّدة.
- فعّل المصادقة متعدّدة العوامل (MFA) — وأَلزِم بها للعمليات الحسّاسة كالتحويل.
- خزّن كلمات المرور بـ hashing قوي (مثل Argon2 أو bcrypt) لا تشفيرًا قابلًا للعكس.
- اطلب تأكيدًا إضافيًا (step-up auth) قبل العمليات عالية المخاطر.
- أنهِ الجلسات بذكاء: مهلة خمول، وإبطال فوري للرمز عند تسجيل الخروج أو تغيير الجهاز.
تأمين الـ API ومنطق الأعمال
ثغرات منطق الأعمال — لا أخطاء التشفير — هي ما يسرق المال غالبًا. أخطر خطأ في تطبيقات الدفع هو الوثوق بقيمة المبلغ القادمة من العميل:
// ❌ خطر: الوثوق بالمبلغ القادم من العميل
// يستطيع المهاجم تعديل "amount" في الطلب ودفع 1 بدل 1000
app.post("/charge", async (req) => {
await gateway.charge(req.body.amount, req.body.orderId);
});
// ✅ آمن: احسب المبلغ على الخادم من مصدر موثوق
app.post("/charge", async (req) => {
const order = await db.orders.find(req.body.orderId);
assertOwnedBy(order, req.user.id); // تحقق الصلاحية
if (order.status !== "pending") throw new Error("already paid"); // منع التكرار
await gateway.charge(order.amountInMinorUnits, order.id); // المبلغ من الخادم
});- احسب المبالغ والأسعار على الخادم دائمًا — لا تثق برقم قادم من العميل.
- افرض idempotency keys على عمليات الدفع لمنع الخصم المزدوج عند إعادة المحاولة.
- تحقّق من الصلاحية على كل طلب (لا تعتمد على إخفاء الزر في الواجهة) لمنع IDOR.
- طبّق rate limiting صارمًا على نقاط الدفع وتسجيل الدخول لكبح الاحتيال الآلي.
لا تسجّل أبدًا بيانات حسّاسة (أرقام بطاقات، CVV، رموز كاملة) في الـ logs. تسريب السجلّات حادثة شائعة، وما لا تخزّنه لا يُسرَق.
منع الاحتيال والمراقبة
- راقب الأنماط الشاذّة: محاولات متكرّرة، مبالغ غير معتادة، عمليات من مواقع جغرافية بعيدة فجأة.
- احتفظ بسجلّ تدقيق (audit log) غير قابل للتعديل لكل عملية مالية.
- أرسل تنبيهات فورية للمستخدم عند كل عملية حسّاسة ليكتشف الاحتيال مبكّرًا.
الامتثال والمراجعة
- التزم بمتطلبات PCI DSS عبر مزوّد الدفع، ولا تتعامل مع بيانات البطاقة بنفسك.
- أجرِ اختبار اختراق مستقلًّا قبل الإطلاق وبشكل دوري بعده.
- افحص الـ dependencies باستمرار لكشف مخاطر سلسلة التوريد.
- وثّق خطة استجابة للحوادث قبل أن تحتاجها — لا أثناء الأزمة.
تبني تطبيق دفع أو محفظة وتريد مراجعة أمنية قبل الإطلاق؟ في PhiBit نُجري تدقيقًا أمنيًا شاملًا — راسلنا على [email protected].