<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Eduardo Iribarren</title>
    <description>The latest articles on DEV Community by Eduardo Iribarren (@edumanage).</description>
    <link>https://dev.to/edumanage</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4046181%2F8dc64848-dea0-446c-811e-1594e47716d6.png</url>
      <title>DEV Community: Eduardo Iribarren</title>
      <link>https://dev.to/edumanage</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/edumanage"/>
    <language>en</language>
    <item>
      <title>Universidad Fermín Toro, Auditoría de Sistemas: Cómo Hacer una Auditoría</title>
      <dc:creator>Eduardo Iribarren</dc:creator>
      <pubDate>Fri, 24 Jul 2026 23:15:44 +0000</pubDate>
      <link>https://dev.to/edumanage/universidad-fermin-toro-auditoria-de-sistemas-como-hacer-una-auditoria-1f6a</link>
      <guid>https://dev.to/edumanage/universidad-fermin-toro-auditoria-de-sistemas-como-hacer-una-auditoria-1f6a</guid>
      <description>&lt;p&gt;&lt;em&gt;Publicado por Eduardo Iribarren&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Cuando alguien escucha la palabra "auditoría" suele pensar en cuentas, facturas y un contador con calculadora. Pero en el mundo del software hay otra auditoría, igual de rigurosa, que no revisa dinero sino &lt;strong&gt;código, datos y controles&lt;/strong&gt;: la auditoría de sistemas. En este artículo explico qué es, cómo se hace paso a paso, y — para que no quede en teoría — la aplico de principio a fin sobre un sistema real: &lt;strong&gt;EduManage v1.0&lt;/strong&gt;, la plataforma de gestión académica que desarrollé para la Unidad Educativa "Bolívar y Bello".&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Definición y tipos de auditoría
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1.1 ¿Qué es una auditoría de sistemas?
&lt;/h3&gt;

&lt;p&gt;Una &lt;strong&gt;auditoría de sistemas&lt;/strong&gt; (o auditoría informática) es el proceso sistemático de recopilar y evaluar evidencia sobre el diseño, la operación y los controles de un sistema de información, con el fin de determinar si:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;protege adecuadamente los activos de información,&lt;/li&gt;
&lt;li&gt;mantiene la integridad de los datos,&lt;/li&gt;
&lt;li&gt;permite que la organización alcance sus objetivos de forma eficaz, y&lt;/li&gt;
&lt;li&gt;utiliza los recursos de manera eficiente.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;En pocas palabras: no basta con que el sistema "funcione". Una auditoría pregunta si funciona &lt;strong&gt;bien, de forma segura y de forma verificable&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  1.2 Tipos de auditoría de sistemas
&lt;/h3&gt;

&lt;p&gt;No existe un único tipo de auditoría; el enfoque cambia según qué se quiera evaluar:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tipo&lt;/th&gt;
&lt;th&gt;Qué evalúa&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Auditoría de aplicaciones&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;La lógica de negocio de un programa específico: ¿el software hace lo que dice que hace? ¿Los cálculos son correctos?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Auditoría de seguridad informática&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Controles de acceso, autenticación, cifrado, exposición a vulnerabilidades (inyección SQL, XSS, CSRF, etc.).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Auditoría de base de datos&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Integridad referencial, normalización, redundancia, respaldos, planes de recuperación.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Auditoría de redes e infraestructura&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Servidores, firewalls, configuración de red, disponibilidad.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Auditoría de cumplimiento (compliance)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Si el sistema cumple normativas legales, contractuales o sectoriales (protección de datos, normativa educativa, fiscal, etc.).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Auditoría operativa / de procesos&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Si los procesos que rodean al sistema (backups, mantenimiento, soporte) son adecuados.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;También se clasifica según &lt;strong&gt;quién la realiza&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Auditoría interna&lt;/strong&gt;: la ejecuta personal de la propia organización o el mismo equipo de desarrollo, de forma preventiva.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Auditoría externa&lt;/strong&gt;: la realiza un tercero independiente, generalmente con fines de certificación o de mayor objetividad.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Y según el momento:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Auditoría previa a producción&lt;/strong&gt; (antes de que el sistema entre en uso real).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Auditoría periódica&lt;/strong&gt; (revisiones programadas sobre un sistema ya en marcha).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Auditoría post-incidente&lt;/strong&gt; (después de una falla o brecha de seguridad).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Para este artículo aplico una &lt;strong&gt;auditoría interna, de aplicación y seguridad, previa a producción&lt;/strong&gt;, sobre EduManage v1.0 — el escenario más común y más útil para un sistema recién construido.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Procedimiento para realizar una auditoría de sistemas
&lt;/h2&gt;

&lt;p&gt;Toda auditoría seria sigue una secuencia de fases. Estas son las que utilicé, adaptadas de marcos de referencia como COBIT e ISO 19011:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Planificación y definición del alcance&lt;/strong&gt;&lt;br&gt;
Se define qué se va a auditar (el sistema completo, un módulo, un tipo de control), con qué objetivo, y qué criterios se usarán para evaluar (buenas prácticas de seguridad, requisitos funcionales, normativa aplicable).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Relevamiento de información&lt;/strong&gt;&lt;br&gt;
Se recopila toda la documentación disponible: manuales de usuario y de sistema, diagramas de arquitectura, modelo de datos, código fuente, políticas de acceso. En esta fase se entiende cómo &lt;em&gt;debería&lt;/em&gt; funcionar el sistema antes de comprobar cómo funciona &lt;em&gt;en realidad&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Ejecución de pruebas (trabajo de campo)&lt;/strong&gt;&lt;br&gt;
Es el corazón de la auditoría. Incluye:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Revisión de código (auditoría estática)&lt;/strong&gt;: inspección línea por línea de los archivos fuente en busca de fallas de seguridad, lógica incorrecta o desviaciones respecto a la documentación.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pruebas funcionales&lt;/strong&gt;: verificar que los módulos hagan lo que el manual dice que hacen.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pruebas de penetración básicas&lt;/strong&gt;: intentar vulnerar controles de acceso, inyectar datos maliciosos, forzar sesiones.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Revisión del modelo de datos&lt;/strong&gt;: integridad referencial, normalización, consistencia de reglas de negocio.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;4. Evaluación de hallazgos y análisis de riesgo&lt;/strong&gt;&lt;br&gt;
Cada hallazgo se clasifica por severidad (crítica, alta, media, baja) según su probabilidad de ocurrencia y el impacto que tendría.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Elaboración del informe de auditoría&lt;/strong&gt;&lt;br&gt;
Se documentan los hallazgos, la evidencia que los sustenta, el riesgo asociado y las recomendaciones de remediación, en un lenguaje claro para que la organización pueda actuar.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Seguimiento (follow-up)&lt;/strong&gt;&lt;br&gt;
Una auditoría sin seguimiento es solo un diagnóstico. La fase final verifica que las recomendaciones se implementaron.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Cómo apliqué esta auditoría al sistema EduManage v1.0
&lt;/h2&gt;

&lt;p&gt;Con el marco anterior ya definido, así fue el proceso concreto sobre EduManage:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Alcance:&lt;/strong&gt; auditoría interna de aplicación y seguridad, previa a producción, sobre el código fuente completo del sistema (14 módulos PHP + configuración de base de datos) y su documentación (Manual de Usuario y Manual del Sistema).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Relevamiento:&lt;/strong&gt; partí de los dos manuales ya elaborados, que me dieron el modelo de datos, la arquitectura declarada y las reglas de negocio esperadas (tres momentos pedagógicos, escala 1–20, nota mínima 10, roles administrador/operador). Esto me sirvió como "línea base" contra la cual comparar el comportamiento real del código.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ejecución de pruebas:&lt;/strong&gt; revisé el código fuente completo (config/db.php y los 14 archivos .php del sistema) buscando específicamente:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;consistencia entre lo documentado y lo implementado,&lt;/li&gt;
&lt;li&gt;uso de sentencias preparadas vs. concatenación directa de consultas SQL,&lt;/li&gt;
&lt;li&gt;verificación de sesión y rol en cada módulo protegido,&lt;/li&gt;
&lt;li&gt;manejo de contraseñas y credenciales,&lt;/li&gt;
&lt;li&gt;protección contra ataques de falsificación de solicitudes (CSRF),&lt;/li&gt;
&lt;li&gt;validación de datos de entrada (especialmente en el módulo de calificaciones, por ser el núcleo de la lógica de negocio),&lt;/li&gt;
&lt;li&gt;manejo y exposición de errores.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Esta combinación — auditoría documental + auditoría de código + pruebas dirigidas — es exactamente el tipo de trabajo que un analista de sistemas haría antes de dar luz verde a un sistema para producción.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Informe de auditoría — EduManage v1.0
&lt;/h2&gt;

&lt;h3&gt;
  
  
  4.1 Resumen ejecutivo
&lt;/h3&gt;

&lt;p&gt;EduManage v1.0 es un sistema funcionalmente completo y con una base de datos bien modelada (3FN, claves foráneas consistentes, trazabilidad de reglas de negocio). El código muestra buenas prácticas defensivas en varios frentes: &lt;strong&gt;uso sistemático de sentencias preparadas&lt;/strong&gt; (no se encontró ni un solo punto de inyección SQL clásica), &lt;strong&gt;verificación de sesión y rol en todos los módulos protegidos&lt;/strong&gt;, y &lt;strong&gt;validación server-side&lt;/strong&gt; de las reglas críticas de negocio (rango de notas 1–20, redondeo). Sin embargo, se identificaron &lt;strong&gt;hallazgos de severidad crítica y alta&lt;/strong&gt; relacionados principalmente con el manejo de credenciales y la ausencia de protección contra falsificación de solicitudes, que deben resolverse antes de exponer el sistema a un entorno de producción con datos reales de estudiantes.&lt;/p&gt;

&lt;h3&gt;
  
  
  4.2 Matriz de hallazgos
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;#&lt;/th&gt;
&lt;th&gt;Hallazgo&lt;/th&gt;
&lt;th&gt;Evidencia&lt;/th&gt;
&lt;th&gt;Riesgo&lt;/th&gt;
&lt;th&gt;Severidad&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;H1&lt;/td&gt;
&lt;td&gt;Las contraseñas se almacenan y se comparan &lt;strong&gt;en texto plano&lt;/strong&gt; (sin hash)&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;login.php&lt;/code&gt;: la validación compara &lt;code&gt;$clave === $fila['Contraseña']&lt;/code&gt; directamente contra el campo &lt;code&gt;VARCHAR(50)&lt;/code&gt; de la tabla &lt;code&gt;USUARIO&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Si la base de datos se filtra o alguien con acceso de lectura la consulta, obtiene todas las contraseñas en claro, incluida la del administrador&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Crítica&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;H2&lt;/td&gt;
&lt;td&gt;Credenciales de base de datos embebidas en texto plano dentro del código fuente&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;config/db.php&lt;/code&gt; contiene usuario y contraseña de MySQL escritos directamente en el archivo, sin variables de entorno ni exclusión de control de versiones&lt;/td&gt;
&lt;td&gt;Cualquiera con acceso al código (o a un respaldo del directorio del sistema) obtiene acceso directo a la base de datos completa&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Crítica&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;H3&lt;/td&gt;
&lt;td&gt;Ausencia de protección CSRF en operaciones destructivas&lt;/td&gt;
&lt;td&gt;Los módulos &lt;code&gt;estudiantes.php&lt;/code&gt;, &lt;code&gt;docentes.php&lt;/code&gt;, &lt;code&gt;cursos.php&lt;/code&gt;, &lt;code&gt;asignaturas.php&lt;/code&gt; y &lt;code&gt;usuarios.php&lt;/code&gt; implementan la eliminación de registros como un enlace GET simple (&lt;code&gt;?action=eliminar&amp;amp;id=N&lt;/code&gt;) sin token de validación. Otros módulos (&lt;code&gt;pensum.php&lt;/code&gt;, &lt;code&gt;asignacion_docentes.php&lt;/code&gt;) usan formularios POST, pero tampoco incluyen token CSRF&lt;/td&gt;
&lt;td&gt;Un enlace o imagen maliciosa cargada mientras un administrador tiene sesión activa podría ejecutar eliminaciones sin su consentimiento&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Alta&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;H4&lt;/td&gt;
&lt;td&gt;Enumeración de usuarios en el formulario de login&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;login.php&lt;/code&gt; devuelve mensajes distintos ("Usuario no encontrado" vs. "Contraseña incorrecta"), lo que permite a un atacante confirmar qué nombres de usuario existen&lt;/td&gt;
&lt;td&gt;Facilita ataques de fuerza bruta dirigidos, al reducir el espacio de búsqueda&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Media&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;H5&lt;/td&gt;
&lt;td&gt;Sin límite de intentos de inicio de sesión&lt;/td&gt;
&lt;td&gt;No existe bloqueo temporal ni control de intentos fallidos en &lt;code&gt;login.php&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Un atacante puede intentar credenciales indefinidamente (fuerza bruta) sin restricción&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Media&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;H6&lt;/td&gt;
&lt;td&gt;No se regenera el identificador de sesión tras autenticarse&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;login.php&lt;/code&gt; no ejecuta &lt;code&gt;session_regenerate_id()&lt;/code&gt; después de validar credenciales&lt;/td&gt;
&lt;td&gt;Riesgo de fijación de sesión (session fixation) si un atacante logra fijar un ID de sesión antes del login&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Media&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;H7&lt;/td&gt;
&lt;td&gt;Mensaje de error de conexión expone detalles internos&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;config/db.php&lt;/code&gt;: &lt;code&gt;die("Error de conexión a la base de datos: " . $conn-&amp;gt;connect_error)&lt;/code&gt; se muestra literalmente si falla la conexión&lt;/td&gt;
&lt;td&gt;Revela detalles de la infraestructura de base de datos a cualquier visitante si el servicio cae&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Baja&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;H8&lt;/td&gt;
&lt;td&gt;El pensum (relación curso–asignatura) no está versionado por periodo académico&lt;/td&gt;
&lt;td&gt;Tabla &lt;code&gt;CURSO_ASIGNATURA&lt;/code&gt; no incluye &lt;code&gt;ID_Periodo&lt;/code&gt;, a diferencia de inscripciones, asignaciones y calificaciones, que sí versionan por periodo&lt;/td&gt;
&lt;td&gt;Al cambiar el pensum de un año a otro, se pierde el historial del pensum anterior&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Media&lt;/strong&gt; (diseño de datos, no seguridad)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  4.3 Aspectos positivos verificados
&lt;/h3&gt;

&lt;p&gt;Para que el informe sea justo, es tan importante documentar lo que funciona bien:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ &lt;strong&gt;Cero inyecciones SQL detectadas&lt;/strong&gt;: las 18 consultas que no usan &lt;code&gt;prepare()&lt;/code&gt; corresponden a listados sin parámetros de usuario (&lt;code&gt;ORDER BY&lt;/code&gt; estático); toda consulta que recibe datos externos usa &lt;code&gt;bind_param()&lt;/code&gt; correctamente.&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Control de acceso consistente&lt;/strong&gt;: los 14 módulos verifican sesión activa, y los que requieren rol de administrador (&lt;code&gt;usuarios.php&lt;/code&gt;) verifican el nivel antes de ejecutar cualquier acción.&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Validación de reglas de negocio en servidor&lt;/strong&gt;, no solo en el navegador: el módulo de calificaciones rechaza notas fuera del rango 1–20 y aplica el redondeo (&lt;code&gt;PHP_ROUND_HALF_UP&lt;/code&gt;) de forma centralizada.&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Escape de salida con &lt;code&gt;htmlspecialchars()&lt;/code&gt;&lt;/strong&gt; aplicado de forma extendida en todos los módulos, mitigando XSS reflejado.&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Integridad referencial&lt;/strong&gt; bien definida con &lt;code&gt;FOREIGN KEY ... ON DELETE CASCADE&lt;/code&gt; en todas las tablas relacionales.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4.4 Recomendaciones priorizadas
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Inmediato (antes de producción):&lt;/strong&gt; migrar el almacenamiento de contraseñas a &lt;code&gt;password_hash()&lt;/code&gt; / &lt;code&gt;password_verify()&lt;/code&gt;, y forzar el cambio de la contraseña del administrador por defecto.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inmediato:&lt;/strong&gt; sacar las credenciales de base de datos del código fuente (variables de entorno o archivo de configuración fuera del control de versiones y excluido de respaldos que se compartan).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Corto plazo:&lt;/strong&gt; implementar tokens CSRF en todas las operaciones que modifiquen datos (crear, editar, eliminar), y migrar las eliminaciones de GET a POST donde aún falte.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Corto plazo:&lt;/strong&gt; unificar el mensaje de error de login ("Usuario o contraseña incorrectos") y añadir un contador de intentos fallidos con bloqueo temporal.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Corto plazo:&lt;/strong&gt; añadir &lt;code&gt;session_regenerate_id(true)&lt;/code&gt; inmediatamente después de autenticar.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mediano plazo:&lt;/strong&gt; versionar &lt;code&gt;CURSO_ASIGNATURA&lt;/code&gt; por &lt;code&gt;ID_Periodo&lt;/code&gt; para conservar el histórico de pensum.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mediano plazo:&lt;/strong&gt; planificar la migración fuera de PHP 5.6 / MySQL 5.7 (ambos sin soporte de seguridad activo), documentando el riesgo aceptado mientras tanto.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  4.5 Conclusión de la auditoría
&lt;/h3&gt;

&lt;p&gt;EduManage v1.0 demuestra una base técnica y de modelado de datos sólida, con buenas prácticas defensivas frente a los riesgos más comunes en aplicaciones PHP (inyección SQL, XSS). No obstante, el sistema &lt;strong&gt;no debería considerarse listo para producción con datos reales de estudiantes&lt;/strong&gt; hasta resolver los hallazgos críticos (H1 y H2) y altos (H3), ya que involucran directamente la confidencialidad de credenciales y la integridad de las operaciones administrativas. Con esas correcciones — que son puntuales y no requieren rediseñar el sistema — EduManage v1.0 alcanzaría un nivel de madurez adecuado para su despliegue en la Unidad Educativa "Bolívar y Bello".&lt;/p&gt;

</description>
      <category>php</category>
      <category>mysql</category>
      <category>spanish</category>
      <category>security</category>
    </item>
  </channel>
</rss>
