خبر و ترفند روز

خبر و ترفند های روز را اینجا بخوانید!

چگونه یک کلید مخفی جدید در جنگو ایجاد کنیم

نگه داشتن کلیدهای خصوصی شما از مخازن کد برای امنیت حیاتی است. دریابید که چگونه این کار را انجام دهید و اگر قبلاً مرتکب اشتباه شده اید چگونه بازیابی کنید.

در جنگو، یک کلید مخفی نقشی حیاتی در افزایش امنیت برنامه شما ایفا می کند. این به مدیریت جلسات کاربر کمک می‌کند، در برابر حملات جعل درخواست متقابل (CSRF) محافظت می‌کند، و از داده‌های شما با تولید و تأیید امضاهای رمزنگاری در میان موارد دیگر محافظت می‌کند.

شما باید کلید مخفی پروژه خود را همیشه امن نگه دارید. افشای آن برنامه شما را در معرض حملات مخرب هکرها قرار می دهد و امنیت آن را به خطر می اندازد. اگر کلید مخفی شما به خطر بیفتد، باید بدانید که چگونه یک کلید جدید ایجاد کنید تا تأثیر منفی بر برنامه خود را کاهش دهید.

چگونه می توان کلید مخفی جنگو شما را فاش کرد؟

اگر ندانسته آن را به git یا یک مخزن کد منبع مشابه متعهد کنید، می توانید به طور تصادفی کلید مخفی جنگو خود را عمومی کنید. این اشتباه در بین برنامه نویسان جدیدی که هنوز در حال یادگیری GitHub هستند رایج است. وقتی این اتفاق افتاد، می توانید یکی از موارد زیر را انجام دهید:

  1. commit را حذف کنید
  2. کلید مخفی را به طور کامل جایگزین کنید.

حذف commit ممکن است بهترین گزینه نباشد زیرا تاریخچه commit همچنان می تواند از طریق روش های مختلف قابل دسترسی باشد، مانند کپی های ذخیره شده در GitHub یا سایر سیستم های توزیع شده. امن ترین کار در چنین شرایطی این است که فرض کنید کلید مخفی شما از قبل به خطر افتاده است.

شما باید یک کلید مخفی جدید برای جایگزینی کلید در معرض خطر ایجاد کنید و با استفاده از متغیرهای محیطی از آن محافظت کنید. در هر صورت، باید یاد بگیرید که چگونه یک کلید مخفی جدید در جنگو ایجاد کنید تا از برنامه خود در برابر مواردی مانند حملات جعل درخواست متقابل (CSRF) محافظت کنید.

مطلب مرتبط:   چگونه امنیت ویندوز 11 خود را تقویت کنیم

چگونه یک کلید مخفی جدید در جنگو ایجاد کنیم

جنگو تابعی به نام get_random_secret_key () ارائه می‌کند که به شما کمک می‌کند هر زمان که آن را فراخوانی می‌کنید یک کلید مخفی جدید ایجاد کنید. تابع get_random_secret_key() یک تابع کاربردی است که از ماژول Secrets در پایتون برای تولید یک کلید مخفی امن با 50 کاراکتر استفاده می کند.

برای ایجاد یک کلید مخفی جدید با تابع ()get_random_secret_key، Command Line Interface (CLI) خود را باز کنید و این دستور را تایپ کنید:

python manage.py shell -c "from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())"

دستور بالا تابع get_random_secret_key() را از django.core.management.utils وارد می کند و سپس یک کلید مخفی جدید با 50 کاراکتر چاپ می کند که می توانید از آن در پروژه خود استفاده کنید. قبل از اجرای دستور بالا، مطمئن شوید که در دایرکتوری اصلی پروژه خود قرار دارید، یعنی همان محل فایل manager.py در پروژه خود.

می توانید با ایجاد یک فایل پایتون و چسباندن این قطعه کد در آن، همان دستور را خارج از CLI خود اجرا کنید:

# import the get_random_secret_key() function
from django.core.management.utils import get_random_secret_key

secret_key = get_random_secret_key()
print(secret_key)

می توانید کد را با تایپ این در CLI خود اجرا کنید:

python fileName.py

دستور بالا باید یک کلید مخفی جدید از 50 کاراکتر را چاپ کند که می توانید در پروژه خود استفاده کنید.

چگونه از کلید مخفی خود با متغیرهای محیطی محافظت کنیم؟

شما احتمالاً نمی خواهید هر بار که یک GitHub commit می کنید، کلید مخفی خود را تغییر دهید. یک راه کارآمد برای ایمن نگه داشتن کلید مخفی، ذخیره آن در یک متغیر محیطی است. متغیرهای محیطی مقادیری هستند که می توانید خارج از پایگاه کد خود تنظیم کنید و برنامه شما همچنان می تواند در طول زمان اجرا به آنها دسترسی داشته باشد. آنها می توانند پیکربندی، کلیدهای API، اعتبار پایگاه داده و غیره را ذخیره کنند.

مطلب مرتبط:   نحوه استفاده از Sass در React

می توانید متغیرهای محیطی خود را در فایلی به نام env ذخیره کنید و آنها را از مخزن git خود حذف کنید. می توانید این کار را با ایجاد فایلی به نام .gitignore در پروژه خود انجام دهید. فایل .gitignore حاوی لیستی از فایل ها و پوشه هایی است که Git آنها را ردیابی نخواهد کرد.

انواع فایل و ساختار دایرکتوری از پروژه ای به پروژه دیگر متفاوت است، اما پیش فرض های معقولی وجود دارد که می توانید برای هر زبان اعمال کنید. می‌توانید فهرستی از قالب‌های gitignore. را در مخزن gitignore GitHub بیابید. مراحل زیر به شما نشان می دهد که چگونه از فایل .gitignore با متغیرهای محیطی در جنگو استفاده کنید.

1. یک فایل .gitignore ایجاد کنید

در دایرکتوری پایه خود – محل فایل manager.py شما – یک فایل gitignore. ایجاد کنید و محتوای این فایل GitHub را در آن کپی کنید. این فایل یک نمونه .gitignore برای پروژه‌های پایتون است که فایل‌های رایجی را که نمی‌خواهید در مخزن خود قرار دهید را حذف می‌کند.

همچنین، می‌توانید در حین ایجاد یک مخزن در GitHub، یک فایل .gitignore به پروژه خود اضافه کنید. برای انجام این کار، روی گزینه Add .gitignore کلیک کنید، Python را جستجو کنید و آن را انتخاب کنید.

اضافه کردن یک الگوی پایتون .gitignore در github

2. یک فایل env. ایجاد کنید

در دایرکتوری پایه خود، یک فایل به نام .env ایجاد کنید. این فایل تمام متغیرهای محیط شما را ذخیره می کند. کلید مخفی خود را کپی کرده و در این فایل قرار دهید ( نقل قول ها و فاصله های اطراف آن را حذف کنید). در اینجا یک مثال است:

SECRET_KEY=x#)_v1dtrlqvc61*025t^u4*-2h^kq&fmaw-ifgkppjxpyhh1%

فایل .gitignore را باز کنید و تأیید کنید که نام فایل .env در آن وجود دارد. اگر اینطور نیست، می توانید با نوشتن نام فایل به تنهایی در یک خط آن را اضافه کنید:

.env

3. بسته python-dotenv را نصب کنید

CLI خود را باز کنید و بسته python-dotenv را به عنوان یک وابستگی نصب کنید.

pip install python-dotenv

نصب بسته python-dotenv

4. فایل settings.py خود را تغییر دهید

در فایل settings.py خود، بسته های زیر را وارد کنید:

import os
from dotenv import load_dotenv

سپس، با فراخوانی تابع load_dotenv() متغیرهای محیط را از فایل .env خود در فایل settings.py بارگیری کنید:

load_dotenv()

در نهایت، متغیر SECRET_KEY خود را با این خط کد جایگزین کنید:

SECRET_KEY = os.environ.get('SECRET_KEY')

می توانید سرور توسعه خود را اجرا کنید تا تأیید کنید که پیکربندی فوق کار می کند. اگر اینطور باشد، پروژه شما باید همانطور که انتظار دارید اجرا شود. دستور زیر سرور توسعه شما را راه اندازی می کند.

python manage.py runserver

کلید مخفی خود را با متغیرهای محیطی ایمن نگه دارید

افشای کلید مخفی شما می تواند مشکلات زیادی را برای شما به عنوان یک توسعه دهنده ایجاد کند. ممکن است همیشه نتوانید پروژه خود را از یک حمله بازیابی کنید، به خصوص در محیط تولید.

مطلب مرتبط:   مقدمه ای بر Concurrency in Go

برای جلوگیری از این عوارض جانبی منفی، همیشه کلید مخفی خود را در یک متغیر محیطی ذخیره کنید و از یک فایل .gitignore استفاده کنید تا آن را از مخزن git خود دور نگه دارید.