Bienvenido

Hola!

Plan activo

---

---

Cursos disponibles

6

Especializados

Tu progreso

0%

Recursos

200+

Documentos tecnicos

Continuar formacion

Accesos rapidos

📚

Biblioteca

⬇️

Descargas

Mejora tu plan

Accede a todos los cursos, herramientas y monitoreo de seguridad.

Ver planes →

Formacion

Centro de Formacion en Ciberseguridad

ISO 27001 incluido gratis con tu cuenta 5 cursos con instructor en vivo via Zoom
🔐

Seguridad en Infraestructura Cloud

8 lecciones Intermedio

0% completado

Securiza AWS GCP y Azure con controles reales y arquitecturas Zero Trust.

1
Introduccion a la seguridad cloud
2
Modelo de amenazas STRIDE en cloud
3
IAM y minimo privilegio
4
Seguridad de red en VPC
5
Cifrado en reposo y en transito
6
Monitoreo y deteccion de amenazas
7
Respuesta ante incidentes cloud
8
Cumplimiento y auditoria automatizada
Inscribirse →
🛡️

Ethical Hacking y Pentest

10 lecciones Avanzado

0% completado

Tecnicas de pruebas de penetracion en entornos corporativos. Metodologia OWASP.

1
Fundamentos del hacking etico
2
Reconocimiento y OSINT
3
Escaneo de vulnerabilidades
4
Explotacion web: OWASP Top 10
5
Post-explotacion y pivoting
6
Evasion de defensas
7
Reporte de hallazgos profesional
8
Laboratorio final: pentest completo
9
Remediacion y seguimiento
10
Certificacion practica
Inscribirse →
📋

Implementacion ISO 27001

12 lecciones Intermedio

0% completado

Implementa un SGSI desde cero. Gap analysis, controles y preparacion para auditoria.

1
Introduccion a ISO 27001:2022
2
Gap analysis: evaluacion inicial
3
Alcance y politica del SGSI
4
Controles del Anexo A
5
Gestion de riesgos de seguridad
6
Auditoria interna
7
Acciones correctivas
8
Certificacion: que esperar
9
Mantenimiento del SGSI
10
SoA: Declaracion de Aplicabilidad
11
Documentacion completa
12
Revision por la direccion
🔍

Analisis Forense Digital

8 lecciones Avanzado

0% completado

Investigacion de incidentes, recuperacion de evidencias y cadena de custodia.

1
Fundamentos del forense digital
2
Cadena de custodia digital
3
Adquisicion de evidencias
4
Analisis de sistemas de archivos
5
Forense en memoria RAM
6
Analisis de logs y SIEM
7
Investigacion de malware
8
Reporte forense profesional
Inscribirse →
☁️

DevSecOps en la Practica

9 lecciones Avanzado

0% completado

Integra seguridad en CI/CD: SAST, DAST, IaC seguro y pipelines protegidos.

1
Introduccion a DevSecOps
2
Threat modeling en desarrollo
3
SAST: analisis estatico de codigo
4
DAST: pruebas dinamicas
5
Gestion de secretos en CI/CD
6
IaC seguro con Terraform
7
Contenedores y Kubernetes seguros
8
Compliance como codigo
9
Pipeline CI/CD seguro completo
Inscribirse →
🚨

Respuesta a Incidentes

7 lecciones Intermedio

0% completado

Playbooks reales, gestion de crisis y comunicacion durante un incidente.

1
Clasificacion de incidentes P1-P4
2
Deteccion y contencion
3
Preservacion de evidencias
4
Erradicacion y recuperacion
5
Comunicacion durante crisis
6
Post-mortem sin culpas
7
Playbooks por tipo de incidente
Inscribirse →

Panel

Panel de Seguridad

A

Postura de seguridad

0

Incidentes activos

3

Recomendaciones

Checklist de seguridad basica

Autenticacion de dos factores activada
Cuenta verificada y activa
Completa tu primer curso de seguridad Iniciar →
Activa monitoreo de seguridad avanzado Ver plan →
Evaluacion de vulnerabilidades pendiente Activar →

Frameworks de cumplimiento

ISO 27001:2022

Control de seguridad de la informacion

En progreso

NIST CSF 2.0

Cybersecurity Framework

En progreso

SOC 2 Type II

Trust Services Criteria

Pendiente

PCI DSS v4.0

Payment Card Industry Security

Pendiente

Herramientas

Kit de Herramientas de Seguridad

🔍

Escaner de Vulnerabilidades

Analiza tu infraestructura cloud y aplicaciones web en busca de vulnerabilidades conocidas.

Disponible en plan Corporativo Ver plan →
📊

Dashboard SIEM

Correlacion de eventos de seguridad en tiempo real con alertas automatizadas.

Disponible en plan Corporativo Ver plan →
🔐

Gestor de Politicas IAM

Analiza y optimiza tus politicas de IAM en AWS, GCP y Azure con el principio de minimo privilegio.

Disponible ahora Acceder →
📋

Generador de Politicas

Genera politicas de seguridad corporativas listas para usar basadas en ISO 27001 y NIST.

Disponible ahora Acceder →
🛡️

Evaluador de Postura

Evalua tu postura de seguridad actual contra los controles de CIS Benchmarks.

Disponible en plan Profesional Ver plan →
📄

Generador de Reportes

Crea reportes ejecutivos de seguridad automaticamente con tus datos e incidentes.

Disponible en plan Profesional Ver plan →

Historial

Actividad Reciente

✅

Cuenta creada exitosamente

Bienvenido a PlusLabsNCR Cybersecurity Platform

Hoy
🎓

Acceso a formacion activado

6 cursos de ciberseguridad disponibles en tu cuenta

Hoy

Suscripcion

Mi Plan

Plan actual

Prueba gratuita

7 dias de acceso completo sin tarjeta de credito

Mejorar plan

Comparativa de planes disponibles

Basico

$49/unico

1 modulo

Activar →

Profesional

$149/mes

Todos los cursos

Activar →

Corporativo

$349/mes

Cursos + Monitoreo

Activar →

Enterprise

Consultar

Todo incluido

Activar →

Informacion de facturacion

Los pagos se procesan de forma segura a traves de Polar, nuestro distribuidor global autorizado. Todos los planes incluyen factura electronica automatica, activacion inmediata y cancelacion en un clic. Sin contratos fisicos. Sin trabajo presencial.

Contenido

Recursos y Descargas

Tienes acceso a todos los recursos como usuario registrado. Haz clic en Descargar para obtener el PDF.

Cursos de formacion — PDF

🔐

Seguridad en Infraestructura Cloud

8 lecciones · Intermedio

🛡️

Ethical Hacking y Pentest

10 lecciones · Avanzado

📋

Implementacion ISO 27001:2022

12 lecciones · Intermedio

🔍

Analisis Forense Digital

8 lecciones · Avanzado

☁️

DevSecOps en la Practica

9 lecciones · Avanzado

🚨

Respuesta a Incidentes de Seguridad

7 lecciones · Intermedio

Guias enterprise

🏗️

Plan de Implementacion de Seguridad

Hoja de ruta 12 meses · Enterprise

🎓

Programa de Capacitacion Corporativa

Plan por rol organizacional · Enterprise

Documentos tecnicos — Leer en linea

🔐

Framework de Seguridad Cloud v3.1

ISO 27001 · AWS · GCP · Azure

Leer documento →
📋

Playbook de Backup y DR

RTO · RPO · Recuperacion ante desastres

Leer documento →
🏛️

Gobernanza TI Enterprise

COBIT · ITIL · RACI · KPIs

Leer documento →
⚙️

Terraform Starter Pack AWS

14 modulos · VPC · EC2 · RDS · IAM

Leer documento →
📄

YAML Deployment Templates

22 manifiestos · Kubernetes · Kustomize

Leer documento →
🏢

Gobernanza Enterprise

Modelo operativo · Auditoria cloud · ISO 20000

Leer documento →

Cuenta

Mi Perfil

Informacion de cuenta

Nombre---
Correo---
Empresa---
Plan activoTrial
Miembro desde---

Seguridad de la cuenta

La autenticacion es gestionada de forma segura por Firebase Authentication. Para cambiar tu contrasena usa el enlace de recuperacion en la pagina de acceso.

Cambiar contrasena

VERIFICACION DE CONOCIMIENTO

1. Para que sirve el gap analysis en ISO 27001?

2. En la escala de madurez, que significa nivel 1 — Inicial?

3. Que nivel minimo de madurez se requiere en todos los requisitos obligatorios para certificar?

4. Segun el caso real, la empresa de software priorizo cerrar primero:

5. Cual es el error mas comun al implementar ISO 27001?

' }, { title: 'Alcance del SGSI y partes interesadas', content: '

Objetivo

Definir el alcance del SGSI correctamente y mapear las partes interesadas que afectan la seguridad de la informacion.

3.1 El alcance es la decision mas critica

El alcance define exactamente que sistemas, procesos y ubicaciones forman parte del SGSI. Un alcance mal definido invalida toda la implementacion.

Alcance demasiado amplio

El proyecto se vuelve inmanejable. La certificacion nunca llega.

Alcance demasiado estrecho

Excluyes sistemas criticos. El auditor lo detecta. No conformidad mayor.

3.2 Como definirlo en 4 pasos

Paso 1 - Identifica activos de informacion criticos

Datos de clientes, codigo fuente, credenciales, contratos. Estos determinan que sistemas entran al alcance.

Paso 2 - Mapea los sistemas que los procesan

Cada activo critico esta en un sistema. Ese sistema entra al alcance junto con sus dependencias.

Paso 3 - Define interfaces con sistemas fuera del alcance

Donde termina tu SGSI y empieza el del proveedor. Controladas mediante contratos y SLAs.

Paso 4 - Documenta exclusiones justificadas

Puedes excluir sistemas con justificacion valida. Cada exclusion debe aparecer en la SoA. "Es complicado" no es valido.

Caso real

Un e-commerce define su alcance incluyendo plataforma web, base de datos y sistema de pagos. Excluye el sistema de RRHH con justificacion documentada: no procesa datos del servicio principal. El auditor acepta la exclusion.

Laboratorio 3

VERIFICACION DE CONOCIMIENTO

1. Que determina que sistemas entran al alcance del SGSI?

2. Una exclusion del alcance es valida cuando:

3. El error de alcance mas peligroso es:

' }, { title: 'Los 93 controles del Anexo A y los 11 nuevos en 2022', content: '

Objetivo

Dominar la estructura de los 93 controles, entender los 11 nuevos de 2022 y aprender a seleccionar controles aplicables.

4.1 Los 4 temas del Anexo A

37

Organizacional

Politicas, roles, proveedores, incidentes, continuidad.

8

Personal

Seleccion, formacion, concienciacion, NDAs.

14

Fisico

Acceso fisico, equipos, trabajo remoto.

34

Tecnologico

IAM, cifrado, logs, vulnerabilidades, red, DLP.

4.2 Los 11 controles nuevos mas importantes

5.7

Threat Intelligence

Monitoreo de amenazas externas para anticipar ataques. Feeds de threat intel y CERT.

5.23

Cloud Security

Controles especificos para servicios cloud: responsabilidad compartida y portabilidad de datos.

8.11

Data Masking

Enmascarar datos sensibles en entornos de prueba. Anonimizacion y tokenizacion.

8.28

Secure Coding

Principios de desarrollo seguro en todo el SDLC. OWASP SAMM y SAST integrado.

8.16

Monitoring Activities

Monitoreo continuo para detectar comportamiento anomalo. SIEM y correlacion de eventos.

Laboratorio 4 - Identifica controles nuevos aplicables

5.7 Threat Intelligence - tienes monitoreo de amenazas externas

5.23 Cloud Security - usas servicios cloud

8.28 Secure Coding - tu empresa desarrolla software

VERIFICACION DE CONOCIMIENTO

1. Cuantos controles nuevos se agregaron en ISO 27001:2022?

2. El control 5.23 de ISO 27001:2022 se refiere a:

3. En cuantos temas se organizan los 93 controles del Anexo A?

' }, { title: 'Evaluacion y tratamiento de riesgos de seguridad', content: '

Objetivo

Ejecutar una evaluacion de riesgos completa, calcular riesgo inherente y residual, y construir un Plan de Tratamiento de Riesgos (PTR).

5.1 Formula de calculo de riesgo

Riesgo = Probabilidad x Impacto

Escala 1-5 x Escala 1-5 = Score 1-25

1-8

Bajo

9-15

Medio

16-25

Alto

5.2 Las 4 opciones de tratamiento

M

Mitigar - Implementar controles

Reduces probabilidad o impacto. Ejemplo: MFA reduce probabilidad de acceso no autorizado.

T

Transferir - Contratar seguro o proveedor

Transfieres el impacto economico. Ejemplo: ciberseguro que cubre costos de un breach.

E

Evitar - Eliminar la actividad que genera el riesgo

Ejemplo: dejar de almacenar datos de tarjetas y usar procesador externo.

A

Aceptar - Asumir el riesgo conscientemente

El riesgo residual es menor que el costo de mitigarlo. Requiere aprobacion formal de la direccion.

Caso real

Startup SaaS: riesgo acceso no autorizado a BD = Probabilidad 4 x Impacto 5 = 20 ALTO. Mitigan con MFA + network isolation. Riesgo residual: 2 x 5 = 10 MEDIO. La direccion acepta formalmente el residual documentado.

Laboratorio 5 - Calcula el riesgo

Probabilidad (1-5)

Impacto (1-5)

VERIFICACION DE CONOCIMIENTO

1. Cual es la formula de calculo de riesgo en ISO 27001?

2. Cuando se usa la opcion de ACEPTAR un riesgo?

3. En el caso real el riesgo residual tras MFA y network isolation fue:

' }, { title: 'La Declaracion de Aplicabilidad SoA', content: '

Objetivo

Construir una SoA real con los 93 controles, justificando inclusion y exclusion, vinculando cada control a los riesgos identificados.

6.1 Que es la SoA y por que es el documento mas importante

La SoA lista TODOS los controles del Anexo A e indica si aplican o no, por que, y en que estado estan. Es el primer documento que pide el auditor certificador.

Atencion critica

La SoA debe ser coherente con el plan de tratamiento de riesgos. Si tienes un riesgo alto y excluyes el control que lo mitiga sin justificacion, es no conformidad mayor.

6.2 Estructura de cada fila de la SoA

Control Aplica Justificacion Estado Evidencia
5.1SIObligatorio clausula 5.2En progresoPOL-SEC-001 v1.2
7.3NOEmpresa 100% remota sin oficinasN/AN/A
8.2SIRiesgo R-03 acceso no autorizadoImplementadoAWS IAM + MFA log

Caso real

Empresa de logistica 100% cloud excluye controles fisicos de datacenter 7.1-7.14. El auditor acepta porque la justificacion es clara y coherente con el alcance. Los riesgos asociados estan cubiertos por el control 5.23 Cloud Security.

Laboratorio 6 - Tu SoA minima

ControlAplicaJustificacionEstado
5.1 Politicas
8.2 IAM

VERIFICACION DE CONOCIMIENTO

1. Que es la SoA?

2. Una exclusion de control es valida cuando:

3. Que pasa si excluyes un control que mitiga un riesgo alto sin justificacion?

' }, { title: 'Politicas de seguridad — Redaccion y aprobacion', content: '

Objetivo

Redactar las 5 politicas de seguridad mas criticas con la estructura correcta que exige ISO 27001 y aprobarlas formalmente.

7.1 Estructura obligatoria de una politica ISO

ID

Identificador unico - Ej: POL-SEC-001

Permite referenciar la politica desde la SoA y los procedimientos.

V

Version y fecha

Control de versiones obligatorio. El auditor verifica que la version vigente es la que se sigue.

A

Aprobador — debe ser alta direccion

Sin firma del CEO o equivalente la politica no tiene validez segun clausula 5.1.

R

Revision programada — minimo anual

Fecha de proxima revision documentada en el cuerpo de la politica.

7.2 Las 5 politicas criticas minimas

PoliticaControl ISOPrioridad
Politica de Seguridad de la Informacion5.1Critica
Politica de Control de Acceso8.1-8.3Critica
Politica de Gestion de Incidentes5.24-5.28Critica
Politica de Copias de Seguridad8.13Alta
Politica de Uso Aceptable5.10, 6.2Alta

Caso real — Error de aprobacion

Una empresa tiene 15 politicas bien redactadas pero ninguna tiene firma de la alta direccion. Fueron aprobadas por el IT Manager. El auditor emite no conformidad mayor: clausula 5.1 exige alta direccion. El proyecto se retrasa 3 meses. El IT Manager no es suficiente — necesitas CEO o CTO.

Laboratorio 7 - Cabecera de tu politica principal

Identificador

Version

Aprobador (alta direccion obligatorio)

Fecha de aprobacion

Proxima revision

VERIFICACION DE CONOCIMIENTO

1. Quien debe aprobar la Politica de Seguridad segun ISO 27001?

2. Con que frecuencia minima debe revisarse una politica ISO?

3. Cual elemento diferencia una politica ISO de una lista de intenciones?

' }, { title: 'Auditoria interna del SGSI', content: '

Objetivo

Planificar y ejecutar una auditoria interna que identifique no conformidades antes de que lo haga el auditor externo.

8.1 Los tipos de hallazgos

No Conformidad Mayor NCM

Incumplimiento de requisito obligatorio. Impide la certificacion hasta resolverlo. Ej: no existe evaluacion de riesgos.

No Conformidad Menor NCm

El proceso existe pero tiene deficiencias. No impide certificacion pero requiere plan correctivo. Ej: politica existe pero no se comunico a todos.

Observacion u Oportunidad de Mejora

No es incumplimiento. El auditor sugiere mejoras. No requiere accion inmediata. Ej: el proceso funciona pero podria automatizarse.

8.2 Programa de auditoria interna

MesClausulasDuracion
Mes 1Clausulas 4 y 5 - Contexto y Liderazgo1 dia
Mes 2Clausulas 6 y 7 - Planificacion y Soporte2 dias
Mes 3Clausula 8 - Operacion y Anexo A3 dias
Mes 4Clausulas 9 y 10 - Evaluacion y Mejora1 dia

Caso real

Empresa healthtech hace auditoria interna 3 meses antes de certificar. Descubre: 12 controles en SoA marcados como implementados sin evidencias, logs sin retencion requerida y solo 2 de 8 politicas comunicadas. Corrigen en 6 semanas. Pasan la certificacion con 2 observaciones menores y cero NCM.

VERIFICACION DE CONOCIMIENTO

1. Cual tipo de hallazgo impide la certificacion ISO 27001?

2. En el caso real cuantas NCM tuvieron en la certificacion?

3. Con que frecuencia minima debe realizarse la auditoria interna?

' }, { title: 'Mejora continua y no conformidades', content: '

Objetivo

Gestionar no conformidades con analisis de causa raiz real usando la tecnica de los 5 Porques y construir un sistema de mejora continua.

9.1 El ciclo PDCA en el SGSI

P — Plan

Objetivos riesgos SoA. Que queremos lograr y como.

D — Do

Implementar controles politicas y procedimientos.

C — Check

Auditorias internas metricas revision por la direccion.

A — Act

Acciones correctivas mejoras al SGSI. Cerrar el ciclo.

9.2 Los 5 Porques — Analisis de causa raiz

Ejemplo: Empleado accedio sin autorizacion

Por 1

Por que accedio sin autorizacion? Tenia credenciales de un ex empleado

Por 2

Por que tenia esas credenciales? No fueron revocadas al salir

Por 3

Por que no fueron revocadas? No existe proceso de offboarding documentado

Por 4

Por que no existe ese proceso? RRHH y TI nunca coordinaron la salida

Por 5

Por que nunca coordinaron? Causa raiz: No existe politica con RACI para offboarding

Accion correctiva: Crear procedimiento de offboarding con revocacion de accesos en max 24h, responsable definido en RACI y evidencia en ticket de ITSM.

Laboratorio 9 - Aplica los 5 Porques

VERIFICACION DE CONOCIMIENTO

1. Que exige ISO 27001 clausula 10.1 ante una no conformidad?

2. Cual fue la causa raiz del acceso no autorizado en el ejemplo?

3. Que significa la A del ciclo PDCA?

' }, { title: 'Revision por la direccion', content: '

Objetivo

Preparar y ejecutar la revision por la direccion con las entradas y salidas que exige clausula 9.3, generando el acta que el auditor revisara.

10.1 Que es y quien debe estar

Es una reunion formal donde la alta direccion evalua el estado del SGSI y toma decisiones sobre recursos y mejoras. No es reunion de equipo tecnico — el CEO o CTO debe liderar.

Error critico

Hacer la revision solo con el equipo de TI sin la alta direccion. El auditor pide el acta y verifica los asistentes. Sin la direccion es no conformidad mayor.

10.2 Entradas obligatorias

Estado de acciones de revisiones anteriores

Cambios en el contexto que afectan el SGSI

Desempeno del SGSI — KPIs incidentes no conformidades

Resultados de la auditoria interna

Oportunidades de mejora identificadas

Laboratorio 10 - Redacta tu primera acta

Fecha de la reunion

Modalidad

Asistentes — nombre y cargo

Principal decision tomada

VERIFICACION DE CONOCIMIENTO

1. Quien debe liderar la revision por la direccion?

2. Cual es una SALIDA obligatoria de la revision?

3. Con que frecuencia minima se realiza la revision por la direccion?

' }, { title: 'Preparacion para la auditoria Stage 1 y Stage 2', content: '

Objetivo

Entender que verifica el auditor en Stage 1 y Stage 2, que documentos necesitas y como responder sin cometer errores.

11.1 Stage 1 — Auditoria de documentacion

El Stage 1 dura 1-2 dias. El auditor revisa documentacion. Si hay NCM no puedes pasar al Stage 2.

Documentos obligatorios para Stage 1:

Alcance del SGSI documentado y aprobado
Politica de Seguridad firmada por alta direccion
Evaluacion de riesgos con metodologia documentada
Plan de Tratamiento de Riesgos PTR aprobado
SoA con los 93 controles completa
Resultados de auditoria interna
Acta de revision por la direccion

11.2 La regla de oro con el auditor

Nunca digas:

Eso lo hacemos pero no esta documentado. Sin evidencia no existe.

Siempre di:

Aqui esta el procedimiento, aqui los logs de las ultimas 3 ejecuciones y aqui la evidencia de la ultima revision.

Preguntas reales de auditor ISO 27001

Muestrame la ultima evaluacion de riesgos y quien la aprobo

Tener: fecha metodologia resultados y firma de la direccion

Como saben que los backups funcionan?

Tener: registro de pruebas de restauracion con fecha resultado y responsable

Como verifican que nuevos empleados conocen la politica de seguridad?

Tener: registro de formacion con confirmacion digital de lectura

VERIFICACION DE CONOCIMIENTO

1. Que verifica el auditor en Stage 1?

2. Cual es la regla de oro en Stage 2?

3. Una NCM en Stage 1:

' }, { title: 'Proyecto final — Plan de implementacion para tu empresa', content: '

Proyecto final del curso

Al completarlo tendras un Plan de Implementacion ISO 27001 real presentable a la direccion de tu organizacion.

Seccion 1 — Informacion del proyecto

Nombre de la organizacion

Sector

Responsable del proyecto ISO

Seccion 2 — Alcance propuesto

Seccion 3 — Cronograma de 12 meses

FaseActividadResponsable
Mes 1-2Gap analysis y alcance
Mes 3-4Politicas y SoA
Mes 5-8Implementar controles Anexo A
Mes 9-10Auditoria interna y correcciones
Mes 11-12Certificacion Stage 1 y Stage 2

Curso completado

Has completado el curso de Cumplimiento Normativo ISO 27001:2022 con 12 lecciones, laboratorios practicos y quizzes de verificacion. Tu certificado digital esta disponible en la seccion de Recursos del portal.

VERIFICACION DE CONOCIMIENTO

1. Que debes tener al completar este proyecto final?

2. Cuanto tiempo toma tipicamente implementar ISO 27001 en una PYME?

3. Cual es el primer documento que pide el auditor en Stage 1?

' } ] }; ['ethical-hack','forense','devsecops','incident'].forEach(cid => { LESSONS[cid] = { name: document.querySelector('#btn-cursos') ? '' : cid, lessons: Array.from({length:10}, (_,i) => ({ title: 'Leccion ' + (i+1), content: '
🔐

Contenido disponible con plan activo

Activa tu plan para acceder a todas las lecciones de este curso.

Ver planes disponibles
' })) }; }); let currentCourse = null, currentLesson = 0, totalLessons = 0; let userProgress = {}; function openLesson(courseId, lessonIdx, total) { currentCourse = courseId; currentLesson = lessonIdx; totalLessons = total; renderLesson(); document.getElementById('lesson-modal').style.display = 'block'; document.body.style.overflow = 'hidden'; } function renderLesson() { const course = LESSONS[currentCourse]; if (!course) return; const lesson = course.lessons[currentLesson] || { title: 'Leccion', content: '

Contenido proximamente.

' }; document.getElementById('modal-course-name').textContent = course.name || currentCourse; document.getElementById('modal-lesson-title').textContent = lesson.title; document.getElementById('modal-content').innerHTML = lesson.content; document.getElementById('modal-counter').textContent = (currentLesson+1) + ' / ' + totalLessons; document.getElementById('modal-progress').style.width = ((currentLesson+1)/totalLessons*100) + '%'; document.getElementById('modal-prev').style.opacity = currentLesson===0 ? '0.3' : '1'; document.getElementById('modal-next').textContent = currentLesson===totalLessons-1 ? 'Finalizar ✓' : 'Siguiente →'; // Save progress if (!userProgress[currentCourse]) userProgress[currentCourse] = 0; if (currentLesson >= userProgress[currentCourse]) { userProgress[currentCourse] = currentLesson + 1; updateProgressUI(); if (window._user && window._db) { const { doc, setDoc, getFirestore } = window; // Save to Firestore try { const ref = window._doc(window._db, 'users', window._user.uid); const updateData = { ['coursesProgress.' + currentCourse]: userProgress[currentCourse] }; import('https://www.gstatic.com/firebasejs/10.12.0/firebase-firestore.js') .then(({ updateDoc }) => updateDoc(ref, updateData).catch(()=>{})); } catch(e) {} } } } function navLesson(dir) { const next = currentLesson + dir; if (next < 0) return; if (next >= totalLessons) { closeLesson(); return; } currentLesson = next; renderLesson(); } function closeLesson() { document.getElementById('lesson-modal').style.display = 'none'; document.body.style.overflow = ''; } function updateProgressUI() { let total = 0, done = 0; Object.entries(LESSONS).forEach(([cid, course]) => { total += course.lessons.length; done += Math.min(userProgress[cid] || 0, course.lessons.length); }); const pct = total > 0 ? Math.round(done/total*100) : 0; const el1 = document.getElementById('stat-progress'); const el2 = document.getElementById('progress-bar-fill'); if (el1) el1.innerHTML = pct + '%'; if (el2) el2.style.width = pct + '%'; // Update per-course progress bars Object.entries(userProgress).forEach(([cid, done]) => { const course = LESSONS[cid]; if (!course) return; const pct = Math.round(done/course.lessons.length*100); const bar = document.getElementById('prog-' + cid); const lbl = document.getElementById('prog-label-' + cid); if (bar) bar.style.width = pct + '%'; if (lbl) lbl.textContent = pct + '% completado'; }); } function switchTab(name) { document.querySelectorAll('.tab-content > div').forEach(d => d.classList.remove('active-tab')); document.querySelectorAll('.nav-item').forEach(b => b.classList.remove('active')); const tab = document.getElementById('tab-' + name); const btn = document.getElementById('btn-' + name); if (tab) tab.classList.add('active-tab'); if (btn) btn.classList.add('active'); } // Build dash courses preview function buildDashCourses() { const courses = [ {id:'sec-cloud',icon:'🔐',name:'Seguridad en Infraestructura Cloud',total:8}, {id:'ethical-hack',icon:'🛡️',name:'Ethical Hacking y Pentest',total:10}, {id:'iso27001',icon:'📋',name:'Implementacion ISO 27001',total:12}, ]; const el = document.getElementById('dash-courses'); if (!el) return; el.innerHTML = courses.map(c => { const prog = userProgress[c.id] || 0; const pct = Math.round(prog/c.total*100); return `
${c.icon}

${c.name}

${pct}%
`; }).join(''); } // ── onUserReady callback ── window.onUserReady = function(user, profile) { const name = (profile.name || user.displayName || 'Usuario').split(' ')[0]; const initials = (profile.name || user.displayName || 'U').split(' ').map(n=>n[0]).join('').slice(0,2).toUpperCase(); // Update UI elements const set = (id, val) => { const el=document.getElementById(id); if(el) el.textContent=val; }; const setHTML = (id, val) => { const el=document.getElementById(id); if(el) el.innerHTML=val; }; set('dash-greeting', 'Hola, ' + name + ' 👋'); set('sb-name', profile.name || user.displayName || 'Usuario'); set('prof-name', profile.name || user.displayName || '---'); set('prof-email', user.email || '---'); set('prof-company', profile.company || 'No especificada'); set('prof-since', profile.createdAt ? new Date(profile.createdAt.toDate?.() || profile.createdAt).toLocaleDateString('es', {year:'numeric',month:'long'}) : '2026'); document.querySelectorAll('#user-avatar,#sb-avatar').forEach(el => { if(el) el.textContent = initials; }); // Plan badge const plan = profile.plan || 'trial'; const planLabel = profile.planLabel || 'Prueba gratuita'; set('stat-plan', planLabel); const planMap = {trial:'Plan activo por 7 dias',basico:'Modulo individual',profesional:'Todos los cursos',corporativo:'Cursos + Monitoreo',enterprise:'Todo incluido'}; set('stat-plan-sub', planMap[plan] || ''); set('plan-name-display', planLabel); set('plan-desc-display', planMap[plan] || ''); // Plan badge on sidebar const sbPlan = document.getElementById('sb-plan'); if (sbPlan) { sbPlan.className='badge-plan ' + plan; sbPlan.textContent = planLabel; } const profPlan = document.getElementById('prof-plan'); if (profPlan) { profPlan.className='badge-plan ' + plan; profPlan.textContent = planLabel; } // Load progress from Firestore if (profile.coursesProgress) { userProgress = profile.coursesProgress; updateProgressUI(); } // Hide upgrade banner if not trial if (plan !== 'trial') { const banner = document.getElementById('upgrade-banner'); if (banner) banner.style.display = 'none'; } buildDashCourses(); }; // URL hash tab routing const hash = window.location.hash.replace('#',''); if (hash && document.getElementById('tab-'+hash)) switchTab(hash); // Keyboard document.addEventListener('keydown', e => { if (e.key==='Escape') closeLesson(); }); // ── Funcion de descarga protegida por Firebase ── function portalDownload(filename) { // El portal ya tiene Firebase activo y window._user disponible // Si el usuario llego aqui es porque ya paso por onAuthStateChanged if (!window._user) { window.location.href = 'login.html'; return; } // Usuario logueado — descargar directo const a = document.createElement('a'); a.href = 'descargas/' + filename; a.download = filename; a.target = '_blank'; document.body.appendChild(a); a.click(); document.body.removeChild(a); // Registrar la descarga en actividad const list = document.getElementById('activity-list'); if (list) { const item = document.createElement('div'); item.className = 'flex items-start gap-4 p-4 rounded-2xl'; item.style = 'background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.06)'; item.innerHTML = '
⬇️
' + '

Descarga: ' + filename.replace('.pdf','').replace(/_/g,' ') + '

' + '

Descargado desde el portal

' + 'Ahora'; list.insertBefore(item, list.firstChild); } } function answerQ(qi,oi,correct,btn,exp){ var done=document.getElementById('qfb-'+qi).innerHTML!=''; if(done)return; document.querySelectorAll('.qopt-'+qi).forEach(function(b,idx){ if(idx===correct){b.style.background='rgba(48,209,88,.15)';b.style.borderColor='rgba(48,209,88,.4)';b.style.color='#30d158';} else if(idx===oi){b.style.background='rgba(255,59,48,.15)';b.style.borderColor='rgba(255,59,48,.4)';b.style.color='#ff3b30';} }); document.getElementById('qfb-'+qi).innerHTML='

'+(oi===correct?'Correcto. ':'Incorrecto. ')+exp+'

'; window._quizA=window._quizA||{}; window._quizA[qi]=(oi===correct); var total=document.querySelectorAll('[id^=qq-]').length; var ok=true;for(var k=0;k' + (oi===correct?'Correcto. ':'Incorrecto. ') + exp + '

'; } // Check all done correctly var total = block.querySelectorAll('.mb-4').length; var allOk = true; for (var k=0; k