Skip to content

Ghost3119/login-auth-demo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Login Auth Demo

Practica individual para comparar un login inseguro con hash SHA256 fijo contra un login seguro con PBKDF2-SHA256 y salt automatico.

El proyecto esta organizado con arquitectura hexagonal para separar reglas de negocio, casos de uso y tecnologia externa.

Requisitos

  • Python 3.11 o superior.
  • No requiere paquetes externos.

Ejecutar la aplicacion

python run.py

Despues abre:

http://127.0.0.1:8000

La base de datos SQLite se crea automaticamente en:

C:\Users\picud\Repos\login-auth-demo\data\auth_demo.db

Ejecutar pruebas

cd C:\Users\picud\Repos\login-auth-demo
python -m unittest discover -s tests

Arquitectura hexagonal

src/
  domain/
    entities.py              Entidades User, PasswordHash y LoginResult
    ports.py                 Puertos PasswordHasher y UserRepository
    exceptions.py            Errores de dominio

  application/
    use_cases.py             Casos de uso: registro, login, CRUD y demo

  infrastructure/
    database/
      sqlite_user_repository.py
    security/
      sha256_password_hasher.py
      pbkdf2_password_hasher.py
    web/
      app.py
      static/styles.css

Como se compara la seguridad

  • SHA256PasswordHasher: genera sha256(password) sin salt. Si dos usuarios tienen la misma contrasena, el hash queda igual.
  • PBKDF2PasswordHasher: genera un salt aleatorio por usuario y deriva la clave con PBKDF2-SHA256. Si dos usuarios tienen la misma contrasena, el salt y el hash cambian.

Flujo recomendado para evidencias

  1. Abre la pagina Arquitectura y toma captura de las capas.
  2. Entra a Registro y crea un usuario manual.
  3. Entra a CRUD usuarios y prueba crear, editar y eliminar usuarios.
  4. Entra a Comparacion BD y pulsa Cargar demo.
  5. Usa los usuarios demo_ana y demo_luis; ambos tienen contrasena 123456.
  6. Observa que SHA256 sin salt se repite para ambos usuarios.
  7. Observa que Salt seguro y Hash PBKDF2 son diferentes.
  8. Prueba Login inseguro con demo_ana y 123456.
  9. Prueba Login seguro con demo_luis y 123456.

Tabla usuarios

CREATE TABLE IF NOT EXISTS users (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    username TEXT NOT NULL UNIQUE,
    full_name TEXT NOT NULL DEFAULT '',
    insecure_password_hash TEXT NOT NULL,
    secure_password_hash TEXT NOT NULL,
    secure_salt TEXT NOT NULL,
    secure_iterations INTEGER NOT NULL,
    created_at TEXT NOT NULL,
    updated_at TEXT NOT NULL
);

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors