Модель пользователя 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)