الانتقال إلى المحتوى الرئيسي
كل المقالات
الامتثال3 دقائق قراءة

حماية مفاتيح الواجهة

مفتاح دفع في مستودع git هو بطاقة بنكية في صندوق بريد. القواعد، وما يُفعل حين يقع الأمر فعلًا.

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

القواعد الخمس

المفتاح يعيش على خادم، لا في متصفح أبدًا. لا في جافاسكريبت جهة العميل، ولا في تطبيق جوال — فملف .apk يُفكّك في ثوانٍ. وإن احتاجت واجهتكم الأمامية إطلاق دفعة، فلتستدعِ خادمكم أنتم، وهو يستدعي خادمنا.

المفتاح يعيش في متغيّر بيئة أو خزنة أسرار، لا في الشيفرة. ولا حتى في مستودع خاص: فالمستودعات تغيّر حالتها، والمتعاونون يغيّرون أرباب عملهم، والنسخ الاحتياطية تُنسخ.

مفتاح الاختبار ومفتاح الإنتاج شيئان مختلفان. البادئة تقول ذلك — chari_sk_test_ مقابل chari_sk_live_ — والبيئة يحدّدها المفتاح نفسه. وهذا بالضبط ما يجعل إرسال اختبار إلى الإنتاج بالخطأ مستحيلًا.

المفتاح لا يُكتب في سجل. انتبهوا لمتتبّعات الأخطاء وأدوات الرصد التي تلتقط ترويسات HTTP: تلك أشيع تسريب وأهدؤه، لأن السرّ ينتهي عند طرف ثالث دون أن يقرّر ذلك أحد.

المفتاح لا يُتبادَل عبر المراسلة. لا بالبريد، ولا على Slack، ولا عبر واتساب. فهذه القنوات تحتفظ وتفهرس وتنسخ احتياطيًا.

ما يقع فعلًا

السيناريو الذي نراه أكثر ليس هجومًا. بل مطوّر مستعجل يضع المفتاح في ملف إعدادات «للاختبار فقط»، ثم ينسى، ثم يدفع الشيفرة. والمستودع خاص، إذن «لا بأس». وبعد ستة أشهر يصير عامًّا، أو يصل إليه مقاول، أو تحطّ نسخة احتياطية في مكان آخر.

وثاني أشيع سيناريو هو ملف .env المُودَع في اليوم الأول للمشروع، قبل أن يكتب أحد ملف .gitignore.

إن تسرّب مفتاح

بالترتيب، ودون انتظار:

  1. 1ألغوه. المفتاح المخترق ليس مفتاحًا يُراقَب، بل مفتاح يُحذَف. أنشئوا بديله أولًا إن أردتم تفادي انقطاع، لكن لا تؤجّلوا الإلغاء.
  2. 2اعتبروا التاريخ كله مكشوفًا. حذف الملف من المستودع لا يكفي: فهو يبقى في تاريخ git، والتاريخ يُستنسخ.
  3. 3انظروا ماذا فُعل به. يقول لكم سجل العمليات ما أُنشئ وما قُرئ وما استُرد، ومتى.
  4. 4عالجوا السبب. ملف .gitignore، وفحص أسرار عند الإيداع، وخزنة — وإلا تكرّر الأمر.

التدوير المخطَّط

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

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

ويفرض التدوير اكتشافًا مفيدًا أيضًا: القائمة الحقيقية للأماكن التي يعيش فيها المفتاح. إذا كسر التبديل خدمة لم يعد أحد يذكرها، فقد تعلمتم للتو شيئًا كان سيكلف أغلى بكثير أثناء حادث.

المفاتيح داخل فريق

بمطوّرَين، يمرّ المفتاح من يد إلى يد. بعشرة، ينتهي في قناة Slack أو ويكي أو ملف «مؤقت» — وكل واحد من هذه الأماكن تسريب قيد التحضير.

ثلاث قواعد تضبط الفريق:

  • مكان واحد للحقيقة: مدير الأسرار. المفتاح المتداول في غيره يُعد مُخترقًا، من حيث المبدأ.
  • للتكامل المستمر مفتاحه الخاص. تعمل اختبارات CI على بيئة الاختبار بمفتاح مخصص يمكن للتدوير أن يضحّي به دون مسّ الإنتاج.
  • مغادرة عضو تُطلق تدويرًا. لا ارتيابًا — بل لأن جهازًا مُرجَعًا وحاسوبًا شخصيًا ومدير كلمات سر فرديًا أماكن لم تعودوا تتحكمون فيها.

وعادة لا تكلف شيئًا: مفاتيح الإنتاج لا تُعرض كاملة على الشاشة أبدًا. تبترها البوابة بعد الإنشاء؛ وينبغي لأدواتكم الداخلية أن تفعل مثلها.

ردّ الفعل الصحيح عند الانطلاق

قبل أول استدعاء لكم، أضيفوا .env و.env.local إلى .gitignore، وتحقّقوا أن أيًّا منهما ليس متتبَّعًا أصلًا في git. ثلاثون ثانية عند انطلاق مشروع، تتفادون بها الصنف الوحيد من الحوادث الأمنية الذي هو مبتذل ومكلف في آن.

تعرض البوابة المفتاح مرة واحدة لا غير، لحظة إنشائه، في نافذة لا تُغلق إلا بعد نسخه — ولا يُرسل بالبريد الإلكتروني أبدًا، ولا يُعرض بعد ذلك ثانية، ولا لكم أنتم. وهذا القيد مقصود: فالمفتاح الذي يمكن إعادة قراءته هو مفتاح ستعيدون قراءته يومًا في مكان لا تتحكمون فيه.

بقلم فريق ChariPay.

اقرؤوا بعده

تقني3 دقائق قراءة

إنجاح دمج الويب هوك

خمسة أخطاء تتكرّر في كل عملية دمج تقريبًا، والمعالج في خمسة عشر سطرًا الذي يتفاداها جميعًا.

دليل3 دقائق قراءة

مطابقة تحصيلاتكم مع محاسبتكم

لماذا لا يكون المبلغ المحصَّل هو المبلغ الواصل إلى البنك، وكيف تجعل الأرقام تتوازن كل يوم.

سؤال حول عملية الدمج لديكم؟

يجيب فريقنا التجّار والمطوّرين على حد سواء، من أول اختبار حتى الإطلاق.