Contenido verificado asociado a este RA
Gestión del Estado en Aplicaciones Web: Fundamentos y Mecanismos
Esta unidad explora los desafíos de la naturaleza sin estado del protocolo HTTP y presenta los principales mecanismos para mantener la información de un cliente web a lo largo de múltiples solicitudes, analizando sus ventajas y casos de uso.
Implementación de Sesiones y Cookies para la Persistencia de Datos
Esta unidad detalla la implementación práctica de sesiones y cookies en aplicaciones web, cubriendo cómo almacenar y recuperar información tanto en el servidor como en el cliente, y cómo gestionar su ciclo de vida.
Autenticación de Usuarios: Mecanismos y Seguridad
Esta unidad aborda los diferentes mecanismos de autenticación de usuarios en aplicaciones web, caracterizando sus principios de funcionamiento, ventajas y desventajas, y sentando las bases para una implementación segura.
Implementación de Sistemas de Autenticación y Adaptación de Aplicaciones Existentes
Esta unidad se centra en la implementación práctica de sistemas de autenticación basados en formularios y en la adaptación de aplicaciones web existentes, como CMS, para integrar nuevas funcionalidades o modificar las existentes.
Herramientas y Entornos para el Desarrollo, Prueba y Depuración Web
Esta unidad cubre las herramientas y entornos esenciales que facilitan el ciclo de vida del desarrollo web, desde la codificación hasta la depuración y el control de calidad, optimizando la productividad del desarrollador.
Conceptos clave
HTTP StatelessEstado de la aplicaciónCookiesSesionesWeb StorageQuery StringHidden Fieldssession_start()$_SESSIONsession_destroy()setcookie()$_COOKIEHTTP-onlyExpiración de cookiesAutenticaciónAutorizaciónForm-based AuthenticationBasic Auth
Errores que conviene evitar
- Almacenar datos sensibles directamente en cookies o Local Storage sin cifrar o validar en el servidor: Causa una vulnerabilidad de seguridad al exponer información confidencial al cliente. Corrección: Utilizar sesiones para datos sensibles, o cifrar y firmar los datos en el cliente, validando siempre en el servidor.
- Confundir la persistencia de Session Storage con la de Local Storage: Session Storage se borra al cerrar la pestaña/navegador, Local Storage persiste. Causa un comportamiento inesperado de la aplicación. Corrección: Entender la diferencia y elegir el mecanismo adecuado según la necesidad de persistencia.
- Llamar a `session_start()` o `setcookie()` después de enviar contenido al navegador: Causa un error 'Headers already sent'. Corrección: Asegurar que estas llamadas se realicen al inicio del script, antes de cualquier salida HTML o `echo`.
- No establecer la bandera `httponly` en cookies de sesión o autenticación: Permite que scripts maliciosos (XSS) accedan a la cookie, comprometiendo la sesión. Corrección: Siempre usar `httponly` para cookies que no necesitan ser leídas por JavaScript.
- Almacenar contraseñas en texto plano o con hashes débiles (ej. MD5): Causa una vulnerabilidad crítica si la base de datos es comprometida. Corrección: Usar funciones de hash criptográficamente seguras como `password_hash()` con `PASSWORD_BCRYPT` o `PASSWORD_ARGON2ID`.
- No usar HTTPS para el formulario de login: Permite que un atacante intercepte las credenciales en texto plano. Corrección: Asegurar que toda la comunicación de autenticación se realice sobre HTTPS.
- No regenerar el ID de sesión después de un login exitoso: Causa una vulnerabilidad de fijación de sesión, donde un atacante puede preestablecer un ID de sesión y luego usarlo para secuestrar la sesión del usuario legítimo. Corrección: Llamar a `session_regenerate_id(true);` después de la autenticación exitosa.
- Modificar directamente el código fuente de un CMS o framework: Causa problemas graves al actualizar la aplicación, ya que los cambios se perderán o generarán conflictos. Corrección: Utilizar siempre los mecanismos de extensión (plugins, temas, hooks) proporcionados por la aplicación.