Тасуйте "ПАРОЛЬ ХАШЕРС" каждый час Джанго - PullRequest
0 голосов
/ 23 октября 2019

Я пытаюсь создать сайт с Django, и я увидел, что если вы измените хеш-хэш django по умолчанию, он автоматически изменит его для пользователя, который тоже входит в систему. Например, у вас есть пароль пользователя, закодированный с помощью 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 Ответ

1 голос
/ 23 октября 2019

Вы не должны изменять настройки в своих приложениях во время выполнения

Источник: Документы Джанго

При этом, рассмотретьследующий (не в состоянии проверить это atm)

  1. Создать команду управления, которая изменяет настройки, используя:
from django.conf import settings

settings.configure(PASSWORD_HASHERS=randomized_hashers)
Создать задание cron для запуска команды каждый час
...