بنية الأمان
يعمل 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 أو تواصل معنا عبر التواصل والدعم.