Headers y hardening
const helmet = require('helmet');
app.use(helmet());
Rate limiting
const rateLimit = require('express-rate-limit');
const limiter = rateLimit({ windowMs: 60 * 1000, max: 100 });
app.use(limiter);
CORS
const cors = require('cors');
app.use(cors({ origin: 'https://miapp.com' }));
Validación de entrada
const { z } = require('zod');
const schema = z.object({ email: z.string().email() });
app.post('/signup', (req, res) => {
const parsed = schema.safeParse(req.body);
if (!parsed.success) return res.status(400).json(parsed.error);
res.json({ ok: true });
});
⚠️ Checklist
- • Mantén dependencias actualizadas (npm audit)
- • No expongas secretos en el repo
- • Usa HTTPS en producción
- • Sanitiza inputs y logs