/ / Cách tạo khóa bí mật mới trong Django

Cách tạo khóa bí mật mới trong Django

Trong Django, khóa bí mật đóng vai trò quan trọng trong việc tăng cường bảo mật cho ứng dụng của bạn. Nó giúp quản lý các phiên của người dùng, bảo vệ chống lại các cuộc tấn công giả mạo yêu cầu trên nhiều trang web (CSRF) và bảo vệ dữ liệu của bạn bằng cách tạo và xác minh chữ ký mật mã trong số những thứ khác.



Bạn nên luôn giữ an toàn cho khóa bí mật của dự án. Việc để lộ nó sẽ khiến ứng dụng của bạn dễ bị tin tặc tấn công bằng ác ý, ảnh hưởng đến tính bảo mật của ứng dụng. Nếu khóa bí mật của bạn bị xâm phạm, bạn nên biết cách tạo một khóa mới để giảm tác động tiêu cực đến ứng dụng của mình.



Làm thế nào khóa bí mật Django của bạn có thể bị lộ?

Bạn có thể vô tình đặt khóa bí mật Django của mình ở chế độ công khai nếu bạn vô tình chuyển giao nó cho git hoặc kho lưu trữ mã nguồn tương tự. Lỗi này phổ biến ở những lập trình viên mới đang tìm hiểu về GitHub. Khi điều đó xảy ra, bạn có thể thực hiện một trong các thao tác sau:

  1. Xóa cam kết.
  2. Thay thế hoàn toàn khóa bí mật.

Xóa cam kết có thể không phải là lựa chọn tốt nhất vì lịch sử cam kết vẫn có thể truy cập được thông qua nhiều phương tiện khác nhau, chẳng hạn như các bản sao được lưu trong bộ nhớ cache trên GitHub hoặc các hệ thống phân tán khác. Điều an toàn nhất để làm trong tình huống như vậy là cho rằng khóa bí mật của bạn đã bị xâm phạm.

Bạn nên tạo một khóa bí mật mới để thay thế khóa bị xâm nhập và bảo vệ nó bằng cách sử dụng các biến môi trường. Trong mọi trường hợp, bạn nên tìm hiểu cách tạo khóa bí mật mới trong Django để bảo vệ ứng dụng của mình khỏi những thứ như tấn công Giả mạo yêu cầu trên nhiều trang web (CSRF).

Cách tạo khóa bí mật mới trong Django

Django cung cấp một chức năng gọi là get_random_secret_key() giúp bạn tạo khóa bí mật mới bất cứ khi nào bạn gọi nó. Hàm get_random_secret_key() là một hàm tiện ích sử dụng bí mật module trong Python để tạo khóa bí mật an toàn gồm 50 ký tự.

Để tạo khóa bí mật mới bằng hàm get_random_secret_key(), hãy mở Giao diện dòng lệnh (CLI) và nhập lệnh sau:

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

Lệnh trên nhập hàm get_random_secret_key() từ django.core.manager.utils rồi in ra một khóa bí mật mới gồm 50 ký tự mà bạn có thể sử dụng trong dự án của mình. Trước khi chạy lệnh trên, hãy đảm bảo rằng bạn đang ở trong thư mục gốc của dự án, tức là cùng vị trí với thư mục quản lý.py tập tin trong dự án của bạn.

Bạn có thể chạy lệnh tương tự bên ngoài CLI của mình bằng cách tạo tệp Python và dán đoạn mã này vào đó:

 
from django.core.management.utils import get_random_secret_key

secret_key = get_random_secret_key()
print(secret_key)

Bạn có thể chạy mã bằng cách nhập mã này vào CLI của mình:

 python fileName.py

Lệnh trên sẽ in ra một khóa bí mật mới gồm 50 ký tự mà bạn có thể sử dụng trong dự án của mình.

Cách bảo vệ khóa bí mật của bạn với các biến môi trường

Bạn có thể không muốn thay đổi khóa bí mật của mình mỗi khi thực hiện cam kết GitHub. Một cách hiệu quả để giữ khóa bí mật của bạn an toàn là lưu trữ nó trong một biến môi trường. Biến môi trường là các giá trị bạn có thể đặt bên ngoài cơ sở mã của mình, mà chương trình của bạn vẫn có thể truy cập trong thời gian chạy. Họ có thể lưu trữ cấu hình, khóa API, thông tin đăng nhập cơ sở dữ liệu, v.v.

Bạn có thể lưu trữ các biến môi trường của mình trong một tệp có tên .env và loại trừ chúng khỏi kho lưu trữ git của bạn. Bạn có thể làm điều này bằng cách tạo một tệp có tên .gitignore trong dự án của bạn. Tệp .gitignore chứa danh sách các tệp và thư mục mà Git sẽ không theo dõi.

Các loại tệp và cấu trúc thư mục khác nhau giữa các dự án, nhưng có những giá trị mặc định hợp lý mà bạn có thể áp dụng cho từng ngôn ngữ. Bạn có thể tìm thấy danh sách các mẫu .gitignore trong kho lưu trữ gitignore của GitHub. Các bước sau đây chỉ cho bạn cách sử dụng tệp .gitignore với các biến môi trường trong Django.

1. Tạo tệp .gitignore

Trong thư mục cơ sở của bạn—vị trí của bạn quản lý.py tập tin—tạo một .gitignore tệp và sao chép nội dung của tệp GitHub này vào đó. Tệp đó là một .gitignore mẫu cho các dự án Python loại trừ các tệp phổ biến mà bạn không muốn có trong kho lưu trữ của mình.

Ngoài ra, bạn có thể thêm tệp .gitignore vào dự án của mình trong khi tạo kho lưu trữ trên GitHub. Để làm điều đó, bấm vào Thêm .gitignore tùy chọn, tìm kiếm Python và chọn nó.

thêm một mẫu python .gitignore trên github

2. Tạo tệp .env

Trong thư mục cơ sở của bạn, hãy tạo một tệp có tên .env. Tệp này sẽ lưu trữ tất cả các biến môi trường của bạn. Sao chép và dán khóa bí mật của bạn vào tệp này (xóa dấu ngoặc kép và khoảng trắng xung quanh nó). Đây là một ví dụ:

 SECRET_KEY=x

Mở .gitignore tập tin và xác nhận rằng .env tên tập tin là trong đó. Nếu không, bạn có thể thêm nó bằng cách viết tên tệp của chính nó trên một dòng:

 .env

3. Cài đặt Gói python-dotenv

Mở CLI của bạn và cài đặt python-dotenv gói dưới dạng phụ thuộc.

 pip install python-dotenv 
cài đặt gói python-dotenv

4. Sửa đổi tệp settings.py của bạn

trong bạn cài đặt.py tệp, hãy nhập các gói sau:

 import os
from dotenv import load_dotenv

Tiếp theo, tải các biến môi trường từ .env tập tin vào của bạn cài đặt.py tập tin bằng cách gọi load_dotenv() chức năng:

 load_dotenv()

Cuối cùng, thay thế của bạn CHÌA KHOÁ BÍ MẬT biến với dòng mã này:

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

Bạn có thể chạy máy chủ phát triển của mình để xác nhận rằng cấu hình trên hoạt động. Nếu có, dự án của bạn sẽ chạy như bạn mong đợi. Lệnh dưới đây sẽ khởi động máy chủ phát triển của bạn.

 python manage.py runserver

Giữ khóa bí mật của bạn an toàn với các biến môi trường

Để lộ khóa bí mật của bạn có thể gây ra nhiều vấn đề cho bạn với tư cách là nhà phát triển. Không phải lúc nào bạn cũng có thể khôi phục dự án của mình sau một cuộc tấn công, đặc biệt là trong môi trường sản xuất.

Để ngăn chặn những tác dụng phụ tiêu cực này, hãy luôn lưu trữ khóa bí mật của bạn trong một biến môi trường và sử dụng .gitignore file để giữ nó ngoài kho git của bạn.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *