[英]MySQL password in Django
我剛開始使用Django項目,在項目的settings.py文件中,daabase部分如下所示:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
'NAME': 'blogengine', # Or path to database file if using sqlite3.
# The following settings are not used with sqlite3:
'USER': 'blogadmin',
'PASSWORD': 'blog@123',
'HOST': 'localhost', # Empty for localhost through domain sockets or '127.0.0.1' for localhost through TCP.
'PORT': '3306', # Set to empty string for default.
}
}
無論如何,我不需要輸入明文密碼,但可能以某種加密形式輸入密碼?
嘗試保護該密碼沒有意義。
該文件中可用於訪問數據庫的任何令牌都可供其他任何人使用來訪問數據庫。 這就是共享秘密安全的工作原理。 用隨機生成的令牌替換密碼,例如,您仍然必須將該令牌傳遞給settings.py
.
更好的辦法是使用該用戶名和密碼限制計算機可以連接到MySQL數據庫,並增加額外的安全層。 哦,確保沒有人可以通過正確保護您的網絡服務器和源控制系統來訪問settings.py
.
您可以做的另一件事是不在密碼/令牌中存儲您的settings.py,這對於安全性來說是一種不好的做法,而不是那樣,您應該在運行您的應用程序的用戶中創建一個環境變量,讓我們說:
export MYSQL_PASSWORD=1234
並從您的django應用程序中讀取它如下
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
'NAME': 'blogengine', # Or path to database file if using sqlite3.
# The following settings are not used with sqlite3:
'USER': 'blogadmin',
'PASSWORD': os.getenv('MYSQL_PASSWORD'),
'HOST': 'localhost', # Empty for localhost through domain sockets or '127.0.0.1' for localhost through TCP.
'PORT': '3306', # Set to empty string for default.
}
}
您應該為所有“敏感數據”執行此操作,例如EMAIL_HOST_PASSWORD,AWS令牌和機密以及這類內容,這樣您就可以將配置與環境分開,而無需在測試服務器或本地環境中更改這些參數,您只需確保您的環境變量相同,但根據您的環境指向正確的位置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.