Desarrollo de Software con IA

Contraseñas, hashing y secretos: lo que jamás va en el código

Distinguir cifrado de hashing, manejar variables de entorno y nunca exponer claves.

Dos formas de ocultar que no son lo mismo

Cifrar es cerrar con llave: quien la tiene reabre y lee el original. Sirve para datos que necesitas volver a usar. Hashear es triturar: se convierte en una huella irreversible; no se «deshashea». Sirve para contraseñas, porque solo necesitas comprobar, no recuperar. Confundirlas es un error de seguridad clásico de la IA.

[Cifrado vs hashing]

Esta actividad interactiva ('Explicacion visual') requiere el motor completo de Lumbre. El contenido estatico se muestra arriba; para la experiencia interactiva, visita la version online de este objeto.

Los «secretos»: lo que nunca va en el código

Un secreto escrito en el código viaja al repositorio, al desplegar y a cualquiera que lea el archivo.
SecretoEjemploDónde va
Clave de APIAPI_KEY del clima o de pagosvariable de entorno en el servidor
Credencial de base de datosDB_PASSWORDvariable de entorno
Contraseña de usuariola que escribe al registrarsesolo como hash en la base de datos
Token de firmaSECRET_TOKEN de la sesiónvariable de entorno

Cómo detectar la IA que expone un secreto

El literal es la filtración
MAL (clave pegada en el codigo, va al repositorio):\n  const API_KEY = "abc123-CLAVE-REAL";\n  fetch(API+"/pagos?key=" + API_KEY);\n\nBIEN (se lee del entorno del servidor, nunca se imprime):\n  const API_KEY = process.env.API_KEY;   // llega del entorno\n  // y la llamada se hace desde el backend, no desde el navegador\n\nREGLA: ningun secreto aparece literal en el codigo ni en el frontend; solo referencias a variables de entorno.

Prueba

¿Por qué las contraseñas se guardan con hashing y no cifradas?

Guardar una API key directamente en el código fuente es aceptable mientras el proyecto sea privado.

Detecta el secreto expuesto

Revisas lo que entregó una IA. Señala el punto que filtra un secreto:

  1. La contraseña del usuario se guarda como hash con una librería madura.
  2. La clave de pagos aparece escrita literalmente en un archivo JavaScript del frontend.
  3. La configuración sensible se lee de variables de entorno del servidor.
  4. El repositorio incluye un .gitignore que excluye el archivo .env.

Identifica la linea con error.

Haz una lista de los secretos de tu proyecto (claves, credenciales) y de dónde debe vivir cada uno (variable de entorno). Pide a la IA que no deje ninguno literal en el código.

PistaSi un secreto se puede ver en el repositorio, da por hecho que ya lo vio alguien.