- Nuevo comunidad.html con sección de participación en el proyecto y 14 alternativas de software libre organizadas por categoría (navegadores, buscadores, correo, mensajería, almacenamiento, redes sociales, VPN/DNS)
- Slider principal ampliado de 3 a 5 diapositivas: slides 4 (jardín japonés) y 5 (bosque aéreo) con layout split texto+botón; slide 2 reemplazada con foto Times Square aérea
- CTAs ácido-verde en slides 1-3 enlazando a salud-digital#ciencia, egosurfing y salud-digital#derechos
- Sección confirm-section sustituida por botón grande "Derechos" que despliega 8 botones verbales (Conocer/Corregir/Borrar/Limitar/Exportar/Oponerse/Decidir/Reclamar) con right-cards RGPD expandibles
- Fondos fotográficos con overlay oscuro en las 4 study cards (estudio-brain, atención, sueño, datos)
- 7 fotos nuevas descargadas en img/
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Dark theme en index (class=page-dark): fondo #1a1714, títulos ácido, botones nav crema
- Hero-landing con gradiente animado ácido→caoba aplicado a los 7 htmls
- Slider 3 slides (crossfade CSS + JS): crowd-phones / surveillance / legal-action
- Imágenes descargadas localmente (CSP img-src 'self')
- Botón RESETEA hero: verde ácido, fuente Recion, tipografía grande centrada
- Cards de estudios con enlaces a fuente original
- CSP ampliada: img-src añade cdn.simpleicons.org para chips de redes
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
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>
- 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>
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>
- 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>