0Pricing
Flask Academy · Урок

Хеширование паролей: никогда не храните открытый текст

Используйте Werkzeug для хеширования и проверки паролей.

«Хеширование паролей: никогда не храните открытый текст» — бесплатный урок Flask Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Flask Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Flask Academy содержит 4 уроков всего.

Части этого урока еще не переведены и отображаются на английском.

Plaintext Is a Disaster

If you store passwords as plaintext, one database leak hands attackers every account at once. The first rule of auth is simple: never save the raw password. 🔒

Hashing, Not Encrypting

You protect passwords with hashing, a one-way transform. Unlike encryption, a hash cannot be reversed back into the original password, even by you.

Werkzeug Has It Built In

Flask ships with Werkzeug, which gives you two helpers for password security. You import them straight from its security module, no extra install needed.

from werkzeug.security import generate_password_hash, check_password_hash

Hash on Sign-Up

When a user registers, run generate_password_hash on their password and store only the result. The plaintext never touches your database.

hashed = generate_password_hash("hunter2")
user.password_hash = hashed

Salt Comes Free

generate_password_hash adds a random salt for you. That is why two users with the same password get totally different stored hashes.

Verify on Login

At login you cannot un-hash anything. Instead you call check_password_hash with the stored hash and the typed password to get a True or False.

ok = check_password_hash(user.password_hash, "hunter2")

Argument Order Matters

Remember the order: the stored hash comes first, the user-supplied password second. Swapping them silently breaks every login attempt.

check_password_hash(stored_hash, typed_password)

Pick a Strong Method

By default Werkzeug uses a strong, slow algorithm on purpose. Slowness is a feature here, because it makes brute-force guessing far more expensive.

generate_password_hash(pw, method="pbkdf2:sha256")

Store the Hash, Not More

Your user table needs a single password_hash column. You never need a separate salt column, since the salt is baked into the hash string itself.

password_hash = db.Column(db.String(255))

Helper Methods on User

A clean trick is to put a set_password method on your User model so hashing lives in one place and your routes stay tidy.

def set_password(self, pw):
    self.password_hash = generate_password_hash(pw)

Never Log the Password

Even during debugging, do not print or log the raw password. A stray log line can leak credentials just as badly as a database breach can.

Quick Check

You need to confirm a login. Which call should you use?

Recap

You learned to hash with generate_password_hash, store only the result, and verify with check_password_hash. Plaintext passwords are gone for good. 🎉

Часто задаваемые вопросы

Урок «Хеширование паролей: никогда не храните открытый текст» бесплатный?

Да — полный текст урока «Хеширование паролей: никогда не храните открытый текст» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Flask Academy, подпишись на CoddyKit PRO. Курс Flask Academy содержит 4 уроков всего.

Чему я научусь в уроке «Хеширование паролей: никогда не храните открытый текст»?

Используйте Werkzeug для хеширования и проверки паролей. Ты практикуешь Flask Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Flask Academy?

Предыдущий опыт не требуется. Flask Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Хеширование паролей: никогда не храните открытый текст»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Flask Academy?

Да. Каждый урок Flask Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Хеширование паролей: никогда не храните открытый текст
  2. Загрузчик пользователей и UserMixin
  3. login_user, logout_user и сеансы
  4. Защита представлений с помощью login_required
← Назад к Flask Academy