在我們做完django項目后,向生產環境部署時,為了避免一些敏感信息被有心人利用,我們應該將其保護起來,比如說在settings配置中的一些密碼等內容存在操作系統內,通過調用來使用,比如下面這種做法:
拿Django中的SECRET_KEY來說吧,其余如同數據庫密碼、郵箱密碼等秘密內容都可以使用這種方式將其貯存在操作系統中。我使用的是python語言,這里要使用到python的os內置模塊:
- os模塊:官方定義:This module provides a portable way of using operating system dependent functionality. (os模塊提供了一種方便的方式讓你去使用操作系統函數)
具體到這個案例中我們使用的是os.environ函數,用來獲取系統變量。
1 import os 2 3 SECRET_KEY = os.environ["SECRET_KEY"]
然后在linux中的/etc/profile中寫入SECRET_KEY變量的值:
1 export SECRET_KEY="xxxxxxxx" 2 # 引號中的內容xxxxxxxx可以用Django原先自帶的,也可以自己單獨再另外生成。 3 ----------------------------------------------------------------- 4 # 生成方式: 5 python manage.py shell 6 >>>from django.core.management.utils import get_random_secret_key 7 >>>get_random_secret_key() 8 'i!$!1s%4kzi%q(_^9b$i&!&apwu1!)l#=x99l2(6m=7+i(ajtm'
【注:在向/etc/profile中寫入數據,退出保存后一定要執行一下:source /etc/profile。作用是使改動生效,否則會報錯】
拓展一下:
Django中的SECRET_KEY是一個十分重要的參數,它的用途如下:
The secret key is used for:
- All sessions if you are using any other session backend than
django.contrib.sessions.backends.cache
, or are using the defaultget_session_auth_hash()
. - All messages if you are using
CookieStorage
orFallbackStorage
. - All
PasswordResetView
tokens. - Any usage of cryptographic signing, unless a different key is provided.
1、它會被用到除了django.contrib.sessions.backends.cache或者get_session_auth_hash()以外的會話后端的所有會話中。
2、它會被用到使用CookieStorage或者FallbackStorage下的所有信息中。
3、它會被用在所有的PasswordResetView令牌中。
4、除非提供了一個不同的秘鑰,它會被用於加密簽名(cryptographic signing)的任何使用。