每小时每小时洗一次“ PASSWORD-HASHERS”

时间:2019-10-23 13:03:07

标签: python django hash password-encryption

我正在尝试使用Django创建一个网站,而我看到的是,如果您更改了默认的django hasher,它也会自动为登录的用户进行更改。例如,您有一个用Bcrypt编码的用户密码,而您在Django设置文件中使用Argon更改了哈希器。下次用户登录时,Django将自动使用Argon更改密码加密。基本上,我想做的是每小时自动更改哈希器。

我尝试使用线程,但是唯一的问题是我需要重新启动服务器以应用新的哈希器。

PASSWORD_HASHERS = [
'django.contrib.auth.hashers.BCryptSHA256PasswordHasher',
'django.contrib.auth.hashers.PBKDF2PasswordHasher',
'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher',
'django.contrib.auth.hashers.Argon2PasswordHasher',
]

def randomizeHasher():
    global PASSWORD_HASHERS
    while(True):
        hasher = PASSWORD_HASHERS
        random.shuffle(hasher)
        PASSWORD_HASHERS = hasher
        time.sleep(20)


t = threading.Timer(0,randomizeHasher)
t.start()

1 个答案:

答案 0 :(得分:2)

  

您不应在运行时更改应用程序中的设置

来源:Django's docs

话虽如此,请考虑以下内容(无法对atm进行测试)

  1. 创建管理命令,以使用以下方法更改设置:
from django.conf import settings

settings.configure(PASSWORD_HASHERS=randomized_hashers)
  1. 创建一个cron作业以每小时运行一次命令