Conciencia básica de seguridad
Las cinco reglas innegociables que todo ingeniero debe seguir
⏱ Estim. ~5 min
01 · Leer
No necesitas ser experto en ciberseguridad. Pero sí necesitas evitar los errores que causan la mayoría de los incidentes de seguridad.
La verdad es que la mayoría de los incidentes no los causan hackeos sofisticados. Los causan ingenieros que olvidan lo básico: contraseñas en el código fuente, entrada del usuario sin validar, endpoints HTTP donde debería ir HTTPS.
Estas cinco reglas te mantienen fuera de problemas. No son opcionales — son el mínimo para escribir código en el que otros puedan confiar.
02 · Leer
Memoriza estas cinco reglas. Cubren la mayoría de los errores de seguridad que cometen los ingenieros junior.
Puntos clave
- Nunca hagas commit de secretos: API keys, contraseñas, tokens → .env + .gitignore
- Nunca confíes en la entrada del usuario: sanitiza todo lo que venga de formularios o URLs antes de usarlo
- Siempre usa HTTPS: nada real debería usar HTTP — los datos en tránsito deben ir cifrados
- Mantén las dependencias actualizadas: corre npm audit con regularidad para detectar vulnerabilidades conocidas
- No loguees datos sensibles: nunca console.log(password) ni guardes tokens en logs de producción
03 · Leer
Acabas de recibir una app que tienes que auditar antes de que salga a producción. Vamos a ver cuántas violaciones de seguridad puedes encontrar usando solo cat y grep.
04 · Práctica de terminal
Primero lee el código fuente completo. Busca cualquier cosa que viole las cinco reglas de seguridad que acabas de aprender.
(Esta sección es interactiva — activa JavaScript para usarla.)
05 · Práctica de terminal
Ahora usa grep para encontrar todas las posibles violaciones de una vez — cualquier cosa que parezca una contraseña, un secreto o una key.
(Esta sección es interactiva — activa JavaScript para usarla.)
06 · Ejemplo de código
Así se ve la versión arreglada. Compara con lo que viste — cada violación de seguridad está atendida.
app.js — problemas de seguridad arreglados
require('dotenv').config();
const express = require('express');
const app = express();
// Secrets from .env, not hardcoded
const API_SECRET = process.env.API_SECRET;
app.post('/login', (req, res) => {
// POST body, not URL query string
const { username, password } = req.body;
console.log('Login attempt:', username);
// No password logged! Compare with hashed version in DB
});
app.listen(process.env.PORT || 3000, () => {
console.log('Server running');
// No secrets logged!
});
Los arreglos: (1) los secretos se mueven a .env vía dotenv, (2) el login usa POST (body) en vez de GET (URL), (3) solo se loguea el username — nunca la contraseña, (4) no hay comparaciones de contraseña hardcodeadas — usa un sistema de autenticación apropiado con contraseñas hasheadas, (5) los logs de arranque no filtran secretos.
07 · Quiz
¿Cuál de los siguientes nunca debería hacerse commit a git?
- package.json
- Un archivo .env con API keys
- index.html
- README.md
08 · Completar
Para revisar las dependencias de tu proyecto en busca de vulnerabilidades conocidas, corre npm _____.
Otras lecciones de este capítulo
⚠ La experiencia interactiva completa necesita JavaScript. Actívalo y vuelve a cargar la página.
※ Este es un proyecto educativo independiente — no es un producto oficial de Anthropic. Claude™ es una marca registrada de Anthropic, PBC.