Какова максимальная длина в пароле пользователя Django? - PullRequest
0 голосов
/ 06 июля 2019

Моя проблема в том, что я не уверен, потому что я не понимаю, как работает поле пароля в Django, то есть я думаю, что это поле не имеет длины max_length, и его можно атаковать с помощьюпереполнение буфера.Возможно ли это?

Я использую пользователя Django по умолчанию.

Ответы [ 2 ]

1 голос
/ 06 июля 2019

Модель пользователя Django по умолчанию (django.contrib.auth) аутентифицируется с помощью имени пользователя и пароля, как указано в docs .

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

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

Django не налагает никаких ограничений на длину пароля в виде открытого текста, а это означает, что злоумышленник может просто передать произвольно большие данные с гарантией отказа.- пароли, заставляющие сервер, на котором запущен Django, выполнять результирующее дорогое вычисление хеша в попытке проверить пароль.Например, пароль размером в один мегабайт потребует примерно одной минуты для проверки при использовании хэша PBKDF2.

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

А в правильной модели поле пароля django.contrib.auth.base_user определяется с помощью max_length=128.

class AbstractBaseUser(models.Model):
    password = models.CharField(_('password'), max_length=128)
0 голосов
/ 06 июля 2019

я нашел в нем: To remedy this, Django's authentication framework will now automatically fail authentication for any password exceeding 4096 bytes

https://www.djangoproject.com/weblog/2013/sep/15/security/

Если вам нужен пароль только в модели User, возможно, это 191. Прочитайте это https://docs.djangoproject.com/en/2.2/ref/contrib/auth/#user-model

...