تخطَّ إلى المحتوى
Uttra

ما هي المتغيرات السرية؟

المتغيرات السرية (Secrets) هي القيم الحساسة التي يحتاجها تطبيقك ليعمل، مثل مفتاح بوابة الدفع أو مفتاح خدمة الرسائل أو كلمة مرور قاعدة البيانات، محفوظة خارج الكود كمتغيرات بيئة. يقرؤها الخادم وقت التشغيل فقط، فلا تظهر في الملفات ولا في المستودع ولا في متصفح الزائر.

آخر تحديث:

المتغيرات السرية (Secrets / Environment variables): المتغيرات السرية هي قيم حساسة مثل مفاتيح API وكلمات المرور تُخزن خارج كود التطبيق، ويقرؤها الخادم من البيئة عند التشغيل. فصلها عن الكود يمنع تسربها عند مشاركة الكود أو نشره.

التعريف المختصر

الكود يقول «استخدم مفتاح بوابة الدفع»، والمتغير السري يحمل المفتاح نفسه. الكود يمكن أن تشاركه وتراجعه وترفعه إلى GitHub، أما المفتاح فلا يراه إلا الخادم. هذا الفصل هو كل الفكرة.

شرح مبسط

على جهاز المطور تُكتب الأسرار عادةً في ملف اسمه .env، وعلى الاستضافة تُضاف من لوحة الإعدادات. الكود يقرأ الاسم لا القيمة:

.env (لا يُرفع إلى المستودع)
PAYMENT_SECRET_KEY=sk_live_xxxxxxxxxxxxxxxx
SMS_API_KEY=xxxxxxxxxxxxxxxx
DATABASE_URL=postgres://app:[email protected]:5432/shop
server.js
const 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. الأسرار تُخزن في مخزن منفصل وتُتاح لمشروعك كمتغيرات بيئة.

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

مصطلحات ذات صلة

أسئلة شائعة

المفتاح العام يعرّف حسابك لدى الخدمة ويسمح بعمليات محدودة مثل عرض نموذج الدفع، ويجوز أن يظهر في الواجهة. المفتاح السري يسمح بعمليات حساسة مثل تنفيذ الاسترداد وقراءة كل العمليات، ولا يغادر الخادم أبدًا. لا تخلط بينهما.

صفحات ذات صلة