ماذا سنبني اليوم؟
سنتعلم اليوم كيفية حماية مفاتيح API السرية وبيانات الاعتماد الحساسة من الظهور مباشرة في الكود المصدري الخاص بك. هذا ضروري للأمان، خاصة عند مشاركة الكود أو رفعه إلى مستودعات عامة مثل GitHub. سنستخدم متغيرات البيئة (Environment Variables) وملف .env في بايثون لإدارة هذه الأسرار بأمان.
لماذا يجب إخفاء مفاتيحك السرية؟
عرض المفاتيح السرية مباشرة في الكود يشكل خطراً أمنياً كبيراً. إذا تم اختراق المستودع الخاص بك، أو حتى إذا نظر شخص ما إلى الكود الخاص بك، يمكنه الوصول إلى خدماتك واستخدامها بشكل غير مصرح به، مما قد يؤدي إلى تكاليف مالية أو سرقة بيانات.
ملاحظة تقنية هامة: لا تقم أبداً برفع ملف
.envإلى مستودعات Git العامة. أضفه دائماً إلى ملف.gitignore.
المتطلبات المسبقة
- Python 3.6 أو أحدث.
- مكتبة
python-dotenv.
الخطوات العملية
الخطوة 1: تثبيت مكتبة python-dotenv
افتح الطرفية (Terminal) أو موجه الأوامر (Command Prompt) وقم بتثبيت المكتبة:
pip install python-dotenv
الخطوة 2: إنشاء ملف .env
في نفس مجلد مشروع بايثون الخاص بك، أنشئ ملفاً جديداً باسم .env (تأكد من وجود النقطة في البداية). ضع فيه مفاتيحك السرية كأزواج مفتاح=قيمة:
API_KEY="your_super_secret_api_key_here"
DATABASE_URL="mysql://user:password@host:port/database"
STRIPE_SECRET_KEY="sk_test_..."
ملاحظة تقنية هامة: استبدل القيم النموذجية بقيمك الحقيقية. لا تضع علامات اقتباس حول القيم إذا كانت أرقاماً، ولكن من الأفضل وضعها دائماً لتجنب أي مشاكل في التفسير.
الخطوة 3: إضافة .env إلى .gitignore
إذا كنت تستخدم Git، فقم بإنشاء أو فتح ملف .gitignore في جذر مشروعك وأضف السطر التالي:
.env
هذا يضمن أن ملف .env لن يتم رفعه إلى GitHub أو أي مستودع Git آخر.
الخطوة 4: قراءة المفاتيح السرية في كود بايثون
الآن، سنكتب كود بايثون لقراءة هذه المتغيرات البيئية باستخدام مكتبة python-dotenv.
أنشئ ملفاً جديداً باسم main.py (أو أي اسم آخر) في نفس المجلد:
from dotenv import load_dotenv
import os
# تحميل المتغيرات من ملف .env
load_dotenv()
# الوصول إلى المفاتيح السرية كمتغيرات بيئية
api_key = os.getenv("API_KEY")
database_url = os.getenv("DATABASE_URL")
stripe_key = os.getenv("STRIPE_SECRET_KEY")
print(f"مفتاح API: {api_key}")
print(f"عنوان قاعدة البيانات: {database_url}")
print(f"مفتاح Stripe السري: {stripe_key}")
# مثال على استخدام المفتاح (لا ينبغي عرضه هكذا في تطبيق حقيقي)
if api_key:
print("\nتم تحميل مفتاح API بنجاح. يمكنك الآن استخدامه للتواصل مع الخدمة.")
else:
print("\nفشل تحميل مفتاح API. تأكد من وجوده في ملف .env")
# مثال على وظيفة تستخدم المفتاح
def call_external_service(key):
if key:
return f"الاتصال بالخدمة الخارجية باستخدام المفتاح: {key[:5]}..." # عرض جزء صغير فقط
return "لا يمكن الاتصال، المفتاح غير موجود."
print(call_external_service(api_key))
الخطوة 5: تشغيل الكود
افتح الطرفية في مجلد مشروعك وقم بتشغيل ملف بايثون:
python main.py
النتيجة النهائية المتوقعة
بعد تشغيل الكود، ستظهر لك المفاتيح السرية التي قمت بتعريفها في ملف .env مطبوعة في الطرفية. هذا يوضح أن الكود الخاص بك يقوم بقراءة هذه المفاتيح بنجاح دون الحاجة إلى تضمينها مباشرة في ملف main.py. وبهذه الطريقة، يمكنك مشاركة الكود المصدري الخاص بك بأمان مع الآخرين أو رفعه إلى مستودعات عامة دون الكشف عن بيانات الاعتماد الحساسة.