Vulnerabilidades corregidas:
- CRLF injection: los campos nickname/phone/address/extra aceptaban \r\n
que podían manipular el cuerpo del email o, en implementaciones futuras,
filtrar hacia cabeceras MIME. sanitizeField() elimina todos los chars
de control (\r \n \t \x00-\x1F) sustituyéndolos por espacio.
- XSS reflejado (latente): rtbfUrl se interpolaba en innerHTML sin
escapar con esc(). Aunque rtbfLink() devuelve URLs hardcodeadas,
cualquier refactor futuro que usase datos del usuario habría sido
explotable. Ahora siempre pasa por esc().
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Vulnerabilidades corregidas:
- Clickjacking: falta X-Frame-Options DENY — un atacante podía embeber
la web en un iframe y hacer que el usuario enviara cartas GDPR sin saberlo
- MIME sniffing: falta X-Content-Type-Options nosniff — el navegador
podía ejecutar JS desde respuestas con Content-Type incorrecto
- Referrer leak: falta Referrer-Policy — las URLs internas se filtraban
a terceros en las cabeceras Referer
- COOP: falta Cross-Origin-Opener-Policy — acceso al window desde
pestañas cross-origin no estaba bloqueado
- CSP: falta Content-Security-Policy — sin restricción de fuentes
de scripts, estilos y conexiones
Headers añadidos: X-Frame-Options, X-Content-Type-Options,
Referrer-Policy, Permissions-Policy, Content-Security-Policy,
Cross-Origin-Opener-Policy, HSTS con preload.
Aplicar: sudo cp infra/nginx-resetea.conf /etc/nginx/sites-enabled/resetea.net && sudo nginx -t && sudo systemctl reload nginx
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- index.html: sustituye grid de bloques por 6 tabs horizontales
(Cuentas base / Redes sociales / Mensajería / Streaming / Buscadores / Data brokers)
con items como tarjetas en grid responsive
- egosurfing.html: dorking expandido de 12 dorks a ~95 organizados en
10 categorías OSINT profesionales (nombre, email, teléfono, alias,
data brokers, pastes/brechas, registros oficiales, perfil profesional,
geolocalización, archivo histórico) con sistema de tabs dinámico
- erase.js: límites de longitud en campos opcionales (nickname 100,
phone 30, address 300, extra 500) + type-check explícito en email
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Seguridad egosearch:
- Sanitizar query: elimina null bytes y caracteres de control (<x00-x1F)
- Limitar longitud a 150 chars (antes 300)
- Limitar tamaño de respuesta SearXNG a 500KB (anti memory exhaustion)
- Validar URLs de resultados: solo http/https, descarta el resto
- Acotar title/snippet a 300/500 chars antes de procesar
Infraestructura (pendiente de aplicar con sudo):
- /tmp/resetea-api.service: systemd service para el backend Node
- /tmp/resetea-nginx.conf: nginx con proxy /api/ -> 127.0.0.1:8787
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Backend:
- Nuevo route GET /api/egosearch con rate limit (8 req/min)
- Usa Google Custom Search API si GOOGLE_API_KEY+CSE_ID configurados
- Fallback a instancias públicas SearXNG con JSON API (sin API key)
- Devuelve top 5: title, url, snippet, domain, engine
Frontend egosurfing.html:
- Barra de búsqueda prominente con 5 modos (nombre/email/usuario/teléfono/libre)
- Resultados en cards: dominio, título, snippet, acciones (ver, RTBF, GDPR)
- RTBF link contextual según el dominio del resultado
- Google dorking rápido: plantillas con 1 clic que se lanzan al buscador
- Herramientas complementarias: HIBP, TinEye, WhatsMyName, formularios RTBF
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
La fuente Italiana era demasiado fina y difícil de leer.
Reemplazada por la pila de fuentes del sistema en body, botones,
chips de redes, sublabels e input de email.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Body: font-size 1.08rem + subpixel-antialiased para Italiana más gruesa
- Hero: padding superior reducido, título más pegado arriba
- Botones nav: Italiana 1.15rem, más altos (0.8rem 1.8rem), hover madera cálida (#ede0cf)
- Network chips: fuente Recion (título) a 1.1rem, padding 0.7rem 1.45rem
- "Selecciona las redes...": Recion 1.5rem centrado
- Sublabels GDPR/manual: Italiana uppercase, centrados
- Grid de chips: justify-content center
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- h1 cambiado a "RESETEA" en negro, tagline a "Reduce tu huella digital." en --acid (#c8ff00)
- Tagline con text-shadow sutil verde ácido
- Botones de nav: hover con borde y fondo verde ácido
- Botón Plantillas GDPR: fondo ácido con texto negro como CTA diferenciado
- Chips de redes: hover en verde ácido (borde + fondo + texto)
- Chips acceso rápido: texto negro (no verde), mismos hovers ácidos
- Italiana: tamaño mayor + subpixel-antialiased para verla más gruesa
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Eliminar topbar/nav del index (se añadirá cuando haya logo)
- Título principal en verde muy clarito (#b8de6a)
- Añadir @font-face Italiana y aplicar a body, input y chips de redes
- Chips de redes: más grandes, elevación 3D en hover, transición cúbica
- Topbar sin position:sticky (limpieza)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Título grande centrado + lema en verde lima (misma fuente, menor tamaño)
- 4 botones de navegación debajo del lema
- Formulario principal visible al cargar: email + chips de redes sociales
- Chips API (caoba): envío automático de carta GDPR via /api/erase
- Chips manuales (verde): abren enlace oficial de eliminación
- Resultados en línea con código de referencia por solicitud
- Checklist completo conservado debajo para control manual
- Nueva sección CSS: hero-landing, erase-form-section, net-chip, results
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Move repo to project root to include both public/ and api/
- Add .gitignore excluding node_modules and .env
- Include API routes (erase, gmail_oauth), services (mailer), and config
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>