我写了ansible-role for openwisp2以简化其部署,它是一系列django应用程序。为了尽可能地简化部署,我编写了一个简单的(可能是微不足道的)SECRET_KEY generator script,由ansible调用,以便在第一次运行ansible playbook时生成密钥。
现在,这工作正常但我认为它击败了Django生成强键的内置安全措施,这也非常难以猜测。
当时我查看其他方法,但没有找到太多,现在我想知道:是否有一个函数用于生成django中的settings.SECRET_KEY?
这样可以避免使用这种家庭烘焙解决方案,即使它们正常工作,但在安全性方面却无效。
答案 0 :(得分:11)
实际上,当您拨打startproject
django.core.management.utils.get_random_secret_key()
时,您可以使用生成新密钥的相同功能。
但请注意,它与您的版本没有太大区别。
答案 1 :(得分:6)
在终端上运行以下命令。
$ python -c 'from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())'
输出:
2x$e%!k_u_0*gq0s4!_u(2(^lpy&gir0hg)q&5nurj0-sseuav
答案 2 :(得分:2)
对于像我这样的懒人:
from django.core.management.utils import get_random_secret_key
get_random_secret_key()
答案 3 :(得分:2)
我想补充一点,根据提交 Fixed #31757 -- Adjusted system check for SECRET_KEY to warn about autogenerated default keys,方法 get_random_secret_key()
被认为是不安全的。
如果您使用的是 python 3.6+,那么您可以使用 secrets.token_hex([nbytes=None])
函数
python3 -c 'import secrets; print(secrets.token_hex(100))'