SkywardOpsالوثائق

الأمان

قواعد مفروضة في قاعدة البيانات، وحارس العرض التوضيحي، وإعادات التوجيه الآمنة، وحارس عناوين URL، وتفويضات المتجر الموقّعة.

قواعد في قاعدة البيانات

أهم القواعد تفرضها Postgres (الأمان على مستوى الصف، ومنح الأعمدة، والمُحفّزات، وقيود التحقق)، لذا لا يستطيع خلل في التطبيق أو وكيل خارج عن السلوك كسرها. بإيجاز:

  • لا يكتب حالة الفوترة إلا المتجر.
  • الوحدات المقفلة أو المعطّلة أو المضبوطة على none لا تعيد أي صفوف.
  • الإطلاق والموافقة والإجهاض وإرسال أوامر المركبات تحتاج إلى publish، وتُسجَّل باسم المستدعي الحقيقي، وليست ممكنة للوكلاء أبدًا.
  • لا إطلاق بوحدة موقوفة على الأرض، أو باحتياطي بطارية منخفض، أو بارتفاع فوق الحد من دون إعفاء.
  • يحتاج الإفراج للخدمة إلى شخص ثانٍ (الأعين الأربع).
  • سجلات الطيران للإضافة فقط؛ ولا يمكن إلا تعليم الإشعارات كمقروءة؛ ولا يمكن تزوير قيود التدقيق.
  • لا يغيّر الوصول إلا المالكون والمسؤولون؛ ولا يتجاوز الوكلاء edit أبدًا.

القائمة الكاملة مع كيفية فرض كل قاعدة في الثوابت. لكل قاعدة اختبار يحاول كسرها.

حارس العرض التوضيحي

ليس في وضع العرض التوضيحي تسجيل دخول، لذا يجب ألا يخدم نشر إنتاج مصادفةً أبدًا. إذا كان DEMO_MODE=true وNODE_ENV=production، يرمي التطبيق عند بدء التشغيل ما لم يُضبط ALLOW_DEMO_IN_PROD=true صراحةً.

إعادات التوجيه الآمنة

يمر أي معامل next أو معامل العودة عبر safeRedirect. لا يقبل إلا المسارات النسبية من الأصل نفسه: شرطة مائلة واحدة في البداية، ومن دون //، ومن دون شرطة مائلة عكسية، ومن دون مخطط، ومن دون محارف تحكم. وأي شيء آخر يرجع إلى /app. يمنع هذا إعادات التوجيه المفتوحة بعد تسجيل الدخول.

حارس عناوين URL

تمر عناوين URL التي يقدّمها المستخدم وسيجلبها الخادم عبر حارس عناوين URL يرفض العناوين الخاصة وعناوين الاسترجاع وعناوين الارتباط المحلي وسائر العناوين المحجوزة. في هذا الإصدار عنوان URL الوحيد من هذا النوع هو وجهة دفع المتجر، وهي تأتي من الإعدادات.

تفويضات المتجر الموقّعة

يوقّع متجر العرض التوضيحي في الموقع كل استحقاق بـ HMAC-SHA256 على جسم JSON معياري (الطلب، ومساحة العمل، والوحدات، والفئة، وإضافة الذكاء الاصطناعي، ونهاية الفترة، ووقت الإصدار)، بسر مشترك من 16 محرفًا على الأقل. يقوم التطبيق بما يلي:

  1. يتحقق من صيغة التوقيع،
  2. يرفض التفويضات الصادرة قبل الآن بأكثر من 5 دقائق أو بعده (نافذة إعادة الإرسال)،
  3. يعيد حساب التوقيع ويقارنه في زمن ثابت،
  4. وعندئذ فقط يكتب أعمدة الفوترة بدور الخدمة.

أي تفويض يفشل في أي خطوة لا يغيّر شيئًا.

الأسرار

لا تُحتاج أي مفاتيح حقيقية ولا تُستخدم في هذا الإصدار. ملفات .env مستثناة من git. كلمة مرور قاعدة البيانات المحلية محلية فحسب.

On this page