التعريف المختصر
الكود يقول «استخدم مفتاح بوابة الدفع»، والمتغير السري يحمل المفتاح نفسه. الكود يمكن أن تشاركه وتراجعه وترفعه إلى GitHub، أما المفتاح فلا يراه إلا الخادم. هذا الفصل هو كل الفكرة.
شرح مبسط
على جهاز المطور تُكتب الأسرار عادةً في ملف اسمه .env، وعلى الاستضافة تُضاف من لوحة الإعدادات. الكود يقرأ الاسم لا القيمة:
PAYMENT_SECRET_KEY=sk_live_xxxxxxxxxxxxxxxx
SMS_API_KEY=xxxxxxxxxxxxxxxx
DATABASE_URL=postgres://app:[email protected]:5432/shopconst paymentKey = process.env.PAYMENT_SECRET_KEY;
if (!paymentKey) throw new Error("PAYMENT_SECRET_KEY is missing");قواعد ذهبية لا تتنازل عنها:
- المفتاح السري للخادم فقط. كثير من الخدمات تعطيك مفتاحين: عام (Publishable) يجوز أن يظهر في الواجهة، وسري (Secret) لا يغادر الخادم.
- لا تلصق مفتاحًا في محادثة أو رسالة واتساب أو بريد. ما يُكتب في المحادثات يبقى في سجلات لا تتحكم بها.
- مفتاح لكل بيئة. مفتاح اختبار للمعاينة، ومفتاح حقيقي للموقع المنشور.
- إذا تسرب مفتاح، ألغه فورًا. حذفه من الكود لا يكفي، أصدر مفتاحًا جديدًا من لوحة الخدمة.
مثال من السوق السعودي
متجر تمور في الرياض ربط موقعه ببوابة دفع تقبل مدى و Apple Pay، وبخدمة رسائل نصية ترسل رمز التحقق. المطور الأول كتب المفتاح السري لبوابة الدفع داخل ملف JavaScript في الواجهة لأن «الربط اشتغل بسرعة». بعد أسابيع لاحظ صاحب المتجر عمليات استرداد غريبة في لوحة البوابة. السبب: المفتاح كان مقروءًا لأي زائر يفتح أدوات المطور في المتصفح. الحل كان إلغاء المفتاح، ونقل كل التعامل مع البوابة إلى الخادم، وحفظ المفتاح الجديد كمتغير سري. لقائمة المخاطر الأشهر في التطبيقات المبنية بالذكاء الاصطناعي راجع أمان التطبيقات المبنية بالذكاء الاصطناعي.
احتفظ أيضًا بقائمة خارج المشروع بأسماء المتغيرات السرية وأي خدمة يخص كل منها ومتى أُصدر، دون القيم نفسها. حين تنتهي صلاحية مفتاح أو تغادر جهة كانت تملك الوصول، تعرف فورًا ما الذي يجب تغييره وفي أي لوحة. ومن العلامات الجيدة أن يتوقف التطبيق برسالة واضحة إذا غاب متغير مطلوب، كما في المثال أعلاه، بدل أن يعمل ناقصًا بصمت ويفشل وقت الدفع.
كيف يظهر في أوترا
في أوترا حين يحتاج مشروعك مفتاحًا، يظهر لك داخل المحادثة نموذج آمن مخفي الأحرف، تلصق المفتاح فيه فيُحفظ مباشرة كمتغير بيئة للمشروع دون أن يظهر نصه في المحادثة أو في الكود. ويمكنك إضافته بنفسك من «البيانات السرية»، وهناك أسماء شائعة جاهزة مثل STRIPE_SECRET_KEY و OPENAI_API_KEY. الأسرار تُخزن في مخزن منفصل وتُتاح لمشروعك كمتغيرات بيئة.
العضو الذي تضيفه من «المشاركة» يحصل على وصول كامل للمشروع بما فيه الأسرار، فأضف فقط من تثق به. ولا تكتب أي مفتاح كرسالة عادية.
مصطلحات ذات صلة
- API: الخدمات التي تحتاج هذه المفاتيح.
- المستودع (Repository): لماذا يُستبعد ملف .env منه.
- بوابة الدفع: أخطر مفتاح تملكه.
- المصادقة وتسجيل الدخول: أسرار الجلسات وكلمات المرور المشفرة.