بنية الأمان

يعمل Analytics House في بيئات V8 معزولة (sandboxes) على Cloudflare Worker، مدعومة باستعلامات Cloudflare D1 SQLite ذات المعاملات (parameterized)، وعزل صارم بين المستأجرين، وتحقق أمني آلي شامل من البداية إلى النهاية.

1. المصادقة وتحصين بيانات الدخول

  • تجزئة كلمات المرور: تُجزَّأ كلمات المرور باستخدام PBKDF2-SHA256 من WebCrypto مع 100,000 تكرار وملح عشوائي فريد بطول 128 بت لكل مستخدم. ويستخدم التحقق مقارنة بايتات بزمن ثابت لمنع هجمات القنوات الجانبية الزمنية.
  • رموز الجلسات وإعادة التعيين: تستخدم الجلسات رموز JWT موقّعة بخوارزمية HS256 مدة صلاحيتها 7 أيام. وتستخدم روابط إعادة تعيين كلمة المرور رموزًا عشوائية صالحة لمرة واحدة لا تُخزَّن إلا على هيئة ملخّصات SHA-256، وتنتهي صلاحيتها بعد ساعة واحدة.
  • تحديد معدل الطلبات على الحافة: تُحمى محاولات تسجيل الدخول، وعمليات إنشاء الحسابات، وإعادة تعيين كلمات المرور، واستقبال الأحداث (لكل مشروع ولكل عنوان IP أو مُرحِّل)، وعمليات الإرسال التجريبي للتقارير، ونقاط نهاية API بمحددات معدل ذات نافذة منزلقة تُرجع 429 Too Many Requests مع ترويسات Retry-After.

2. العزل بين المستأجرين والتحكم في الوصول المستند إلى الأدوار (RBAC)

  • تقييد صارم بالمستأجر: يربط كل استعلام SQL المعرّف project_id ويتحقق من العضوية في المشروع قبل التنفيذ. وتتلقى الطلبات غير المصرّح بها 404 Not Found كي لا يمكن تعداد معرّفات المشاريع.
  • أدوار المالك والمسؤول والمشاهد: يتمتع المشاهدون بوصول للقراءة فقط إلى لوحات التحكم المجمّعة؛ إذ يُحظر عليهم تصدير الأحداث الخام (403)، وتُحجب عنهم تلقائيًا في موجز الأحداث الخام الحقول user_id وsession_id وvisitor_id وcity.
  • مفاتيح API للإحصاءات للقراءة فقط ومحدودة الصلاحيات (ea_sk_...): لا يُخزَّن في D1 سوى تجزئة SHA-256 وبادئة من 12 حرفًا. ولا يمكن لمفاتيح الإحصاءات أبدًا قراءة الأحداث الخام أو إدارة الإعدادات أو كشف مفتاح API الخاص باستقبال الأحداث.

3. أمان سلسلة التوريد وWebhooks

  • Subresource Integrity (SRI): تحسب لوحة «الخصوصية والإعدادات» في كل مشروع ملخّص السلامة الحالي sha384-... لملف /tracker.js، لتتمكن المواقع من تثبيت بايتات السكربت الدقيقة في وسم <script integrity="..."> ضمن HTML الخاص بها.
  • Webhooks تنبيهات محصّنة ضد SSRF: تفرض Webhooks التنبيهات الصادرة إلى Slack وDiscord والوجهات المخصّصة استخدام https:// فقط، وتحظر localhost وعناوين الاسترجاع (loopback) وعناوين link-local ونطاقات عناوين IP الخاصة وفق RFC 1918.
  • الحماية من حقن CSV: تُعقِّم جميع عمليات تصدير CSV الخلايا التي تبدأ بمحفّزات الصيغ (=، و+، و-، و@، وTab، وCR).
  • ترويسات أمان HTTP: تفرض الاستجابات X-Content-Type-Options: nosniff، وX-Frame-Options: DENY، وReferrer-Policy: strict-origin-when-cross-origin، وقائمة سماح صارمة لأصول CORS.

4. مراقبة التوفّر والإفصاح المسؤول

تُجرى فحوصات مباشرة لسلامة قاعدة البيانات وWorker كل 15 دقيقة، وتُنشر نتائجها على صفحة حالة النظام العامة. للإبلاغ عن ثغرة أمنية، راسل contact@analytics.house أو تواصل معنا عبر التواصل والدعم.