2017-07-11 10 views
5

Làm cách nào tôi có thể xử lý bảo mật của các khung công tác web như django trên github hoặc bất kỳ trang web kiểm soát phiên bản nào của miền công cộng khác.Các dự án Django và git

settings.py có thể và thường chứa thông tin cơ sở dữ liệu nhạy cảm, mật khẩu và khóa bí mật, không được tải lên kho và ở chế độ xem đơn giản.

Cách thực hành phổ biến và cách xử lý ít rắc rối nhất là gì?

+2

Có rất nhiều hướng dẫn về chủ đề này rất nhưng [Twelve-Factor ứng dụng] (https://12factor.net/config) được coi là một trong những khuôn khổ tốt nhất cho phát triển phần mềm. – Selcuk

Trả lời

2

Như @Selcuk đề cập, 12 Factor App cung cấp hướng dẫn tốt về cách bảo vệ và cách ly thông tin nhạy cảm của bạn.

Trong câu trả lời khác tại đây: Django settings: raise KeyError, raise ImproperlyConfigured or use defaults?
Tôi giải thích phương pháp tôi có xu hướng sử dụng để càng gần càng tốt với 12 nguyên tắc Factor.
Trong loại:

  1. Tạo một file .envhay.ini với các biến dự án của bạn trong đó:

    DB_USERNAME=myDB 
    DB_PASSWORD=for_your_eyes_only 
    DEBUG=False 
    MY_DJANGO_KEY=no_peeking_this_is_secret 
    ... 
    
  2. Thêm .env.env.*hay.ini.ini.* trong hồ sơ .gitignore của bạn, do đó bảo vệ thông tin nhạy cảm của bạn khỏi bị tải lên github.
  3. Tạo env.example (hãy cẩn thận không đặt tên nó với số . khi bắt đầu, vì nó sẽ bị bỏ qua). Trong tập tin đó, bạn có thể đặt một ví dụ về cấu hình dự kiến ​​để có thể tái sản xuất chỉ đơn giản là copy, paste, rename to .ini or .env.
  4. Sử dụng decouple.config để đọc tập tin cấu hình của bạn:

    trên settings.py

    from decouple import Csv, config 
    
    DEBUG = config('DEBUG', cast=bool, default=True) 
    SECRET_KEY = config('MY_DJANGO_KEY') 
    ... 
    
+0

Sau khi đào một số phương pháp này hoạt động khá tốt. Cảm ơn. Dưới đây là một số liên kết tham khảo mà tôi đã sử dụng để có được sản phẩm cuối cùng: [link 1] (https://pypi.python.org/pypi/python-decouple) [link 2] (https://simpleisbetterthancomplex.com/2015/ 11/26/gói-of-the-week-python-decouple.html) – Jaberwocky

+0

@Jaberwocky tốt để biết :) –

0

Tôi thường sử dụng settings.py khác nhau cho mỗi giai đoạn (phát triển, thử nghiệm và prodcution). Người duy nhất tôi giữ trên một phiên bản kiểm soát là một trong những tương ứng với phát triển. settings.py khác là nội bộ và, khi được yêu cầu, chúng được sao chép vào từng phiên bản của máy chủ (kiểm tra và sản xuất).

Hy vọng điều này sẽ hữu ích.

0

Câu trả lời dễ dàng: Thêm nó vào .gitignore của bạn. Điều đó nói rằng, nếu bạn định chia sẻ ứng dụng Django của mình, bạn sẽ muốn cung cấp ít nhất các phần bạn đã chỉnh sửa cho ứng dụng của mình.

0

Mật khẩu và các thông tin nhạy cảm được lưu trữ trong trường hợp của tôi trong cài đặt riêng lẻ dev_settings.pyprod_settings.py cả hai tệp đều nằm trong .gitignore. Trong settings.py Tôi có thể chuyển đổi giữa chúng qua Môi trường như thế này:

DEV_SETTINGS = '_XXXXX_' 

if os.environ.get('PROJECT_NAME_PROD', 'NO') == 'YES': 
    from project.prod_settings import * 
else: 
    from project.dev_settings import * 

Với điều này bạn vẫn có thể có settings.py trong kho lưu trữ.

Các vấn đề liên quan