在Django中生成我的SECRET_KEY是否可以接受
base64.base64encode(os.urandom(32))
或将使用
binascii.hexlify(os.urandom(32))
是更好的选择吗?
如果这些都没有,你会建议什么?我试图避免使用Django的get_random_string
,因为我不认为这是安全的。这适用于生产环境。我也可以增加传递给os.urandom
的整数,但我不确定什么值不是过度杀伤。
答案 0 :(得分:1)
最好的选择是使用Django的get_random_secret_key
方法。
# Return a 50 character random string usable as a SECRET_KEY setting value.
from django.core.management.utils import get_random_secret_key
SECRET_KEY = get_random_secret_key()
这些建议都没有使SECRET_KEY
更安全。你仍然只是生成一个随机的字符串。如果您真的担心安全性,可以增加生成的随机字符串的长度。 get_random_secret_key
实际上只是get_random_string
的别名,它改变了返回字符串的字符集和长度:
# generate an even longer random string usable as a SECRET_KEY setting
from django.utils.crypto import get_random_string
chars = 'abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*(-_=+)'
SECRET_KEY = get_random_string(100, chars)