Как сказать «1000», а не «1001» пользовательских паролей? - PullRequest
0 голосов
/ 29 апреля 2020

Моя пользовательская модель django.contrib.auth.models.User. По умолчанию он использует алгоритм PBKDF2 для шифрования паролей, поэтому я вижу хеши паролей в базе данных. Есть ли способ отключить шифрование , чтобы я мог прочитать пароли?

Я знаю, что в целом это не очень хорошая практика. У меня есть эта цель, потому что я шифрую пароли на уровне Frontend и пропускаю хеши через инфраструктуру REST. Предполагается, что они будут использоваться для проверки подписей и выполнения других криптографических операций, поэтому мне нужны сами переданные пароли, и я не хочу создавать пользовательскую модель пользователя или связанную модель «один к одному» для хранения хешей в отдельном где-то в поле

И мой settings.py:

# settings.py

PASSWORD_HASHERS = [
    "app.hashers.EmptyPasswordHasher",
]

К сожалению, это не помогло. Согласно исходному коду здесь https://github.com/django/django/blob/master/django/contrib/auth/hashers.py, функция check_password вызывает identify_hasher, для которого перед переданным закодированным паролем требуется имя алгоритма до $. Поэтому внедренный EmptyPasswordHasher alw aws возвращает False по проверкам, что неправильно.

1 Ответ

0 голосов
/ 29 апреля 2020

Как вы сами сказали, это плохая идея, потому что, если кто-то использует тот же пароль на вашем сайте, что и на другом сайте, вы фактически рискуете утратить пароль другого сайта, если вас взломали. Это большая ответственность.

Тем не менее, я знаю, что могут быть определенные c случаи, когда вышеприведенное не применимо, или когда вы уверены, что никто не использует свой пароль с другого сайта.

Django решает, какой метод использовать sh пароль, который следует использовать, посмотрев на параметр PASSWORD_HASHERS . Можно написать свой собственный пароль ha sh и указать его в настройках.

Хэши используют подпись, найденную в django .hashers , так что, возможно, вы могли бы написать свой собственный хеш, который просто возвращает пароль как есть?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...