Calcule hashes de contraseñas; nunca almacene texto plano
Use Werkzeug para calcular y verificar hashes de contraseñas.
Calcule hashes de contraseñas; nunca almacene texto plano es una lección gratuita de Flask Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Flask Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Flask Academy incluye 4 lecciones en total.
Partes de esta lección aún no han sido traducidas y se muestran en inglés.
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_hashHash 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 = hashedSalt 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. 🎉
Preguntas frecuentes
¿La lección «Calcule hashes de contraseñas; nunca almacene texto plano» es gratis?
Sí — el texto completo de «Calcule hashes de contraseñas; nunca almacene texto plano» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Flask Academy, actualiza a CoddyKit PRO. El curso de Flask Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Calcule hashes de contraseñas; nunca almacene texto plano»?
Use Werkzeug para calcular y verificar hashes de contraseñas. Practicas Flask Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Flask Academy?
No se requiere experiencia previa. Flask Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.
¿Cuánto tiempo toma la lección «Calcule hashes de contraseñas; nunca almacene texto plano»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Flask Academy?
Sí. Cada lección de Flask Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Calcule hashes de contraseñas; nunca almacene texto plano
- Cargador de usuarios y UserMixin
- login_user, logout_user y sesiones
- Proteja vistas con login_required