我剛開始學習 Django,我想知道使用隨機生成的 SECRET-KEY 會有什么缺點。到目前為止,我已經開始使用此代碼...
from pathlib import Path import random, string
# Build paths inside the project like this: BASE_DIR / 'subdir'. BASE_DIR = Path(__file__).resolve().parent.parent
# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/4.0/howto/deployment/checklist/
# Randomized security key size = 100 SECRET_KEY = ''.join(random.choices(string.ascii_uppercase string.ascii_lowercase
string.punctuation string.hexdigits string.digits, k = size))
目前,這似乎適用于我制作的一個簡單博客,但我想知道這在其他用途??中可能有什么缺點,以及是否有更好的方法來確保密鑰安全。
提前致謝!
uj5u.com熱心網友回復:
您確實應該使用隨機生成的密鑰,但它不應該在設定中動態生成,因為旋轉密鑰會使活動會話、訊息和令牌無效。從檔案:
密鑰用于:
- 如果您使用的是django.contrib.sessions.backends.cache以外的任何其他會話后端,或者使用默認的 get_session_auth_hash() ,則所有會話。
- 如果您使用CookieStorage或FallbackStorage的所有訊息。
- 所有PasswordResetView令牌。
- 加密簽名的任何使用,除非提供了不同的密鑰。
如果您輪換您的密鑰,以上所有內容都將失效。密鑰不用于用戶的密碼,密鑰輪換不會影響他們。
注意:不要random.choices()用于生成密鑰,因為它不是加密安全的。您可以為此使用secrets 模塊:
import secrets
import string
choices = string.ascii_letters string.digits "<>()[]*?@!#~,.;"
key = "".join(secrets.choice(choices) for n in range(100))
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/492332.html
