الأمان والخصوصية

كيف نحمي حسابك

آخر تحديث: 18 مايو 2026

المنهج: الأمان عند مهارة ليس شعاراً تسويقياً. هذه الصفحة تُلستر التدابير التقنية الفعلية المطبّقة في الكود، لتتمكن من التحقق منها بنفسك إن أردت — أو تبليغنا إن وجدت ثغرة.

تسجيل الدخول وكلمات المرور

  • كلمات المرور: تُخزَّن كـ hashes عبر bcrypt بمعامل كلفة 12 — لا نخزّن النص الأصلي مطلقاً.
  • الحماية من Brute-force: بعد 5 محاولات فاشلة على نفس البريد، يُقفل الحساب لـ 4 ساعات. القفل مُنفَّذ على مستوى مزوّد المصادقة، لا يمكن تجاوزه بطلبات API مباشرة.
  • زمن استجابة ثابت: سواء البريد موجود أم لا، وقت رد محاولة الدخول واحد — لا يمكن التعرّف على البريد المسجّل عبر فروقات زمنية.
  • رسالة فشل موحّدة: أي فشل بتسجيل الدخول يطلع نفس الرسالة — لا نُفصِح إن كان البريد غير موجود أو كلمة المرور خاطئة أو الحساب مقفل.
  • تحقق البريد إلزامي: لا تعمل كلمة المرور حتى تُفعّل بريدك عبر الرابط المُرسَل.
  • الجلسات: JWT موقّعة بـ HS256 (مفتاح AUTH_SECRET 32 بايت). لا تُرسَل المفاتيح للعميل أبداً.
  • قريباً: تحقق بخطوتين (2FA) عبر SYROTP — رمز SMS بالعكس مصمَّم محلياً.

البيانات وحفظها

  • قاعدة البيانات: Postgres مع امتدادات pgcrypto + citext. لا توجد كلمات مرور خام بأي مكان.
  • عناوين IP: تُجزَّأ بـ SHA-256 قبل تخزينها بسجل التدقيق. لا نخزّن أي IP صراحةً.
  • أرقام الحسابات: تفاصيل وسائل الدفع (شام كاش، البنك، المحفظة الرقمية) غير مرئية للعميل أبداً — حتى عند دفعه لمقدّم الخدمة. الحماية بطبقتين: فحص ملكية الصف بكل Server Action، وفلترة على مستوى الـ UI.
  • وثائق الهوية: تُحذف نهائياً خلال 24 ساعة من اكتمال التحقق. سياسة عدم احتفاظ صريحة.
  • الإيميل بسجلات التدقيق: الدومين فقط (gmail.com)، لا البريد الكامل.
  • كل حقل PII موسوم في الـ schema بتعليق صريح للمراجعة.

الـ HTTP Headers

كل صفحة تُرسل الـ headers التالية لتعزيز عزل المتصفح:

  • Strict-Transport-Security مع preload — مدة سنتين.
  • Content-Security-Policy صارمة — script-src/style-src/img-src/font-src/connect-src كل منها مقيّد بمصدر محدّد.
  • X-Frame-Options: DENY و frame-ancestors 'none' — مهارة لا يمكن تضمينها في iframe (حماية من clickjacking).
  • X-Content-Type-Options: nosniff
  • Referrer-Policy: strict-origin-when-cross-origin
  • Permissions-Policy: camera=(), microphone=(), geolocation=() — لا نطلب صلاحيات حسّاسة من المتصفح.
  • X-Powered-By مُلغى — لا نكشف stack التشغيل.

الكود وSever Actions

  • تحقق الإدخال: كل Server Action يستخدم Zod للتحقق من شكل المدخلات قبل أي عملية DB.
  • CSRF: Auth.js يحمي endpoints المصادقة بـ token CSRF تلقائياً. Server Actions في Next.js محميّة ببنيتها (signed action IDs).
  • ملكية الصف: كل عملية تعدّل بيانات مستخدم تتحقق إن مالك الصف = الجلسة الحالية. لا تعتمد الحماية على الـ UI فقط.
  • صلاحيات الأدمن: مسارات الإدارة محميّة بـ requireAdmin() الذي يعيد التوجيه للصفحة الرئيسية (لا للـ login، لتجنّب الكشف عن وجود لوحة إدارة).
  • أمان حماية AI: طلبات المطابقة بالـ AI تمر عبر safety gate يرفض الطلبات غير القانونية / الاحتيالية / الضارة قبل عرض أي مرشّحين.
  • SQL Injection: Drizzle ORM يستخدم prepared statements لكل query. لا توجد string concatenation في استعلامات DB.
  • سجل التدقيق: كل عملية حسّاسة (login، signup، payout، dispute decision) تُسجَّل في جدول audit_logs مع ipHash و user agent.

الخصوصية مع طرف ثالث

  • OpenRouter (للـ AI): نُرسل وصف المشروع فقط للتحليل. لا نرسل بيانات حساب المستخدم.
  • Resend (للإيميل): الإيميل والـ subject فقط. لا محتوى حسّاس بالإيميلات.
  • المنصة سوفر سوري (مخطط للإطلاق) — البيانات تبقى ضمن المنطقة العربية.

الإبلاغ عن الثغرات (Responsible Disclosure)

إن وجدت ثغرة أمنية، أبلغنا قبل أي إفصاح علني. نلتزم بـ:

  • الرد خلال 72 ساعة
  • تحديث منتظم خلال المعالجة
  • نشر اعتراف بالباحث بعد إصلاح الثغرة (لو رغب)
  • عدم اتخاذ إجراء قانوني ضد الباحث المتعاون بحسن نية
للإبلاغ

راسلنا على support@mahara.sy مع تفاصيل الثغرة، خطوات إعادة إنتاجها، والأثر المحتمل.

مهارة تشغّل برنامج Bug Bounty بمكافآت تصل إلى $200 لكل ثغرة موثّقة فريدة. للشروط والنطاق: صفحة الباحثين الأمنيين.

للتفاصيل التقنية الكاملة وسياسة التواصل، راجع ‎/.well-known/security.txt.

لقرائتك راجع سياسة الخصوصية و الشروط.