مدیریت کلیدهای حساس
جنگو امنیت

مدیریت کلیدهای حساس در Django

  • 1403/09/17

مدیریت کلیدهای حساس در Django

در پروژه‌های نرم‌افزاری، به‌خصوص در وب‌اپلیکیشن‌هایی که با Django توسعه داده می‌شوند، مدیریت متغیرهای حساس مانند SECRET_KEY، اطلاعات دیتابیس، و کلیدهای API یکی از مهم‌ترین چالش‌هاست. ذخیره این اطلاعات به‌طور مستقیم در فایل settings.py می‌تواند مشکلات امنیتی جدی به همراه داشته باشد، مخصوصاً اگر کد منبع در مخازن عمومی مانند GitHub قرار گیرد.

فایل .env چیست و چرا اهمیت دارد؟

فایل .env یک فایل متنی ساده است که می‌توانید مقادیر متغیرهای محیطی خود را در آن ذخیره کنید. این فایل به شما کمک می‌کند تا:

  • امنیت پروژه را افزایش دهید.
  • متغیرها را پیکربندی کرده و در محیط‌های مختلف (توسعه، تست و تولید) به‌سادگی تغییر دهید.
  • از اشتباهات ناشی از به اشتراک‌گذاری کلیدهای حساس جلوگیری کنید.

چگونه در Django از فایل .env استفاده کنیم؟

1. نصب کتابخانه python-dotenv

برای خواندن متغیرهای محیطی از فایل .env، ابتدا کتابخانه python-dotenv را نصب کنید:

pip install python-dotenv

 2. ایجاد فایل .env در ریشه پروژه

یک فایل به نام .env در پوشه اصلی پروژه (همان جایی که manage.py قرار دارد) ایجاد کرده و متغیرهای حساس را در آن تعریف کنید:

SECRET_KEY=your-very-secret-key
DATABASE_NAME=my_database
DATABASE_USER=my_user
DATABASE_PASSWORD=my_password

. بارگذاری مقادیر فایل .env در settings.py

در فایل settings.py، کتابخانه dotenv را وارد کرده و مقادیر را بارگذاری کنید:

 

import os
from dotenv import load_dotenv
# بارگذاری مقادیر فایل .env
load_dotenv()
# استفاده از متغیرهای محیطی
SECRET_KEY = os.getenv('SECRET_KEY')
DATABASES = {
   'default': {
       'ENGINE': 'django.db.backends.postgresql',
       'NAME': os.getenv('DATABASE_NAME'),
       'USER': os.getenv('DATABASE_USER'),
       'PASSWORD': os.getenv('DATABASE_PASSWORD'),
       'HOST': os.getenv('DATABASE_HOST', 'localhost'),
       'PORT': os.getenv('DATABASE_PORT', '5432'),
   }
}

جلوگیری از انتشار فایل .env

اطمینان حاصل کنید که فایل .env در مخزن گیت منتشر نمی‌شود. برای این کار، فایل .gitignore خود را به‌روزرسانی کنید:

مزایای استفاده از فایل .env در Django

  1. امنیت بیشتر: اطلاعات حساس از کد منبع جدا شده و به اشتباه منتشر نمی‌شوند.
  2. مدیریت ساده‌تر محیط‌های مختلف: می‌توانید برای محیط‌های توسعه، تست و تولید فایل‌های .env جداگانه داشته باشید.
  3. افزایش خوانایی و انعطاف‌پذیری: تغییر مقادیر متغیرهای محیطی بدون تغییر کد برنامه امکان‌پذیر است.
دیدگاه
نوشتن یک دیدگاه

آدرس ایمیل شما منتشر نخواهد شد، فیلدهای الزامی علامت گذاری شده است*.

عضویت در خبرنامه

رایگان ثبت نام کنید و اولین نفری باشید که از پست های جدید مطلع می شوید.