Seguridad a fondo · Unidad 20
Aplicaciones web
Sigue una solicitud por comprobaciones de identidad, permisos de recursos, intérpretes y protecciones del navegador.
ATT&CK TA0001 Initial Access
Para prepararteArquitecturas de aplicaciones webAutenticación
Después de esta lección puedes
- describir propósito, datos y cambio previsto de una solicitud
- distinguir prueba de cuenta, permiso sobre recursos e interpretación segura
- explicar por qué las protecciones del navegador complementan al servidor
Lecciones de esta unidad
Explorar 27 lecciones de este tema
- HTTP y proxiesLee solicitudes, comprende las cookies y separa la protección del transporte de los permisos.12 min
- Mapear una superficie webConstruye un inventario útil de recursos, identidades, flujos de datos e incertidumbre.9 min
- Comprender JavaScript del clienteSigue los datos en el navegador y distingue configuración pública de secretos privilegiados.9 min
- Cross-site scriptingComprende los contextos del navegador y por qué una sola regla de codificación no sirve para todos.11 min
- Inyección SQLSepara la estructura de las consultas de sus valores y distingue prevención, permisos e impacto.9 min
- Inyección de comandos y argumentosDistingue la interpretación de una shell de la que hace un programa de sus argumentos.9 min
- Archivos, cargas y límites de rutasSigue el contenido desde su nombre hasta almacenamiento, procesamiento y descarga autorizada.9 min
- Fronteras de confianza del servidorComprende descargas de URL, plantillas, XML y deserialización como decisiones distintas.9 min
- Autenticación y accesoSepara identidad, sesiones, validación de tokens y permiso sobre cada recurso.10 min
- APIs y GraphQLRevisa permisos de objetos y propiedades, además del coste de trabajo en distintos estilos de API.9 min
- Proteger aplicaciones comunesRelaciona inventario, identidad, avisos del proveedor y medidas sostenibles de protección.9 min
- Sesiones: después de iniciar sesiónSigue un acceso desde su creación hasta la renovación, revocación y cierre.11 min
- Límites del navegador: origen, CORS y CSRFDistingue quién puede leer una respuesta de quién puede enviar una solicitud.10 min
- Autorización: decidir sobre cada objetoUn acceso válido y un identificador impredecible todavía no demuestran permiso.11 min
- Separa los datos de las instruccionesSigue un texto por su validación, una consulta y una página.10 min
- Lógica de negocio: pasos válidos, mal resultadoEntiende dinero, estados, reintentos y reglas que el sistema debe conservar.11 min
- Cada solicitud cruza un límiteRevisa un cambio de reserva separando datos aceptables de acciones permitidas.4 min
- La salida depende del contextoDecide por qué un nombre mostrado con seguridad no garantiza un enlace seguro.4 min
- Estructura y valores de consultaRevisa una búsqueda sin confundir valores enlazados con estructura seleccionable.4 min
- Subir archivos es un cicloSigue un documento por su aceptación, procesamiento y entrega.4 min
- Las búsquedas del servidor necesitan políticaSepara el permiso para importar una imagen del permiso para usar la red del servidor.4 min
- Las cookies no prueban intenciónRevisa un cambio con cookies sin confundir reconocimiento de sesión con intención.4 min
- Las cachés deben conservar privacidadElige una política de caché que conserve el público permitido de una página personalizada.4 min
- Reintentar sin repetir consecuenciasUsa un registro de reservas para razonar sobre reintentos tras una respuesta incierta.3 min
- Comprobar y actualizar deben concordarLee la secuencia de dos procesos y protege la última plaza disponible.4 min
- Errores útiles con detalle limitadoConvierte un fallo incierto de reserva en mensajes útiles para dos públicos.4 min
- Caso práctico: revisar acceso a documentosUtiliza roles, documentos y notas proporcionadas para decidir qué debe permitir el servidor y qué evidencia falta.11 min
Una aplicación web recibe mensajes y toma decisiones. Reservar un libro puede exigir sesión válida, permiso sobre la cuenta, un ejemplar disponible y una actualización coherente. La seguridad incluye todas esas reglas, además de la pantalla de acceso.
HTTP define mensajes y semántica de aplicación. Utiliza transporte subyacente: HTTP/3 emplea QUIC y versiones anteriores suelen usar TCP. HTTPS protege la comunicación, pero no decide quién edita un objeto ni garantiza reglas de negocio correctas.
Comprende el propósito de la solicitud
Una solicitud tiene método, destino, cabeceras y, a veces, cuerpo. Sus campos llevan identificadores, texto, evidencia de sesión y opciones. El nombre de un campo no demuestra que su valor sea fiable.
En una reserva ficticia, identifica libro, cuenta y acción deseada. El servidor debe obtener identidad fiable de una sesión validada, comprobar permisos y aplicar reglas. Una etiqueta de cuenta enviada no constituye prueba.
Un mapa de solicitudes documenta propósito, entradas, cambios, sensibilidad y permisos. Incluye lecturas y escrituras: puede haber divulgación no autorizada sin modificar el registro. Un código de respuesta correcto no demuestra autorización ni procesamiento empresarial correctos.
Autenticación y autorización
La Autenticación establece confianza en una cuenta. Una cookie puede mantener sesión; JWT es un formato; una clave API puede identificar una aplicación; un método con certificado prueba posesión según una configuración de confianza. Ninguno sustituye toda validación.
La Autorización decide si ese actor puede actuar sobre este recurso ahora. Puede aplicarse a usuarios autenticados o anónimos. Importan propiedad, rol, organización, etapa del proceso y otras reglas. Ocultar un botón ayuda a la interfaz, pero no impone permisos a una API.
Un socio puede reservar libros. ¿Puede editar todas las reservas?
No. El permiso para usar una función y el permiso sobre un objeto son decisiones distintas. El servicio debe comprobar propietario y roles legítimos del personal en cada acción protegida.
Los datos deben seguir siendo datos
Una Inyección permite que contenido no fiable influya en instrucciones o sintaxis. El intérprete determina la prevención: operaciones de base de datos parametrizadas, codificación de salida según contexto, API seguras y opciones dinámicas restringidas cumplen funciones distintas.
No existe una función de escape universal para SQL, HTML, órdenes y cualquier plantilla. Parametrizar tampoco cubre automáticamente identificadores u otros elementos que la API no admite como parámetros; requieren diseño y validación adecuados.
Archivos y solicitudes del servidor tienen límites adicionales. Una ruta o URL sintácticamente válida puede señalar un recurso no permitido. Restringe recursos y operaciones independientemente del análisis sintáctico.
Cada protección del navegador tiene una función
La Política de mismo origen limita el acceso de scripts entre orígenes, especialmente la lectura de respuestas. Permite ciertas solicitudes y recursos incrustados entre orígenes. CORS declara acceso seleccionado para navegadores; no sustituye autenticación ni autorización. Una lectura bloqueada no demuestra que la solicitud careciera de efectos.
Las cookies tienen protecciones distintas. Secure restringe transporte, HttpOnly limita acceso desde scripts y SameSite influye en el envío entre sitios. El comportamiento depende de reglas del navegador y configuración.
CSRF utiliza credenciales que el navegador añade automáticamente a una solicitud no deseada. Tokens adecuados, comprobaciones de origen y política de cookies ayudan a validar su legitimidad. XSS implica ejecución no autorizada de scripts. Puede realizar acciones o leer datos de la página aunque HttpOnly impida leer directamente la cookie. Robar cookies no es su único impacto.
Elige una lección para profundizar
| Tema | Lección siguiente |
|---|---|
| Mensajes y procesos | HTTP y mapeo |
| Navegador | JavaScript y XSS |
| Intérpretes | SQL e inyección de órdenes |
| Recursos | Archivos y servicios del servidor |
| Identidad y clientes | Autenticación y API |
| Decisiones de sesión y objeto | Ciclo de sesión y autorización de objetos |
| Reglas entre peticiones | Lógica de negocio y cambios de estado sin carreras |
| Aplica las ideas | Revisión de acceso a documentos: decide con personas, recursos y política aportados. |
| Software empaquetado | Aplicaciones comunes |
Un hallazgo útil relaciona conducta observada, regla prevista, datos o acción afectados y corrección concreta. Distingue observaciones de suposiciones y conserva solo la evidencia depurada necesaria para explicarlo.
Sigue una petición a través de cinco decisiones
Considera una biblioteca ficticia. Lina pide cancelar la reserva R42. La sesión identifica a Lina, R42 pertenece a Jo y la política permite cancelar solo al propietario o a un bibliotecario. Lina tiene el rol de miembro. Estos datos bastan para resolver el permiso: rechazar esta cancelación.
La autenticación funcionó, pero solo aportó una entrada a la autorización. El identificador R42 selecciona el objeto; no establece una relación con Lina. El servidor debe evaluar actor, acción, recurso y política vigente antes de modificar el estado. También debe devolver únicamente información que el solicitante pueda recibir.
PrediceLa interfaz oculta el botón de cancelar R42. ¿Cambia eso la decisión del servidor?
La decisión sigue siendo rechazar. Ocultar una acción no disponible ayuda al usuario, pero la interfaz cliente no es la autoridad del servicio. La misma política debe cubrir navegador, móvil y otros clientes admitidos.
Añade ahora una cancelación permitida de una reserva de Lina. El permiso no resuelve la concurrencia: la reserva podría haberse completado ya. El servicio necesita una transición de estado definida y una actualización coherente. Si después muestra la explicación de Lina, ese texto necesita un contexto de salida apropiado. Si almacena la respuesta en caché, la política de uso compartido debe corresponder a su audiencia.
Una revisión útil sigue cinco preguntas: quién actúa, qué objeto interviene, qué acción está permitida ahora, cómo se interpretan los datos y dónde puede conservarse o compartirse el resultado. Los registros aportados establecen la decisión sobre R42; no demuestran que el código desplegado la aplique. Para eso hacen falta evidencias de implementación y verificación.
Términos que viste
InyecciónAutenticaciónAutorizaciónPolítica de mismo origenCSRF
Compruébate
Sin reloj ni penalizaciones. Lee cada explicación y vuelve a intentarlo cuando quieras.
Las preguntas de esta lección han cambiado. Tu lectura sigue guardada; repasa las preguntas actualizadas.
-
Lina es miembro; la reserva R42 pertenece a Jo. Solo propietarios o bibliotecarios pueden cancelar. ¿Qué debe hacer el servicio?
Ver la respuesta
Respuesta correcta: Rechazarla porque Lina no cumple ninguna de las relaciones permitidas. Aplica la regla al actor, acción y recurso concretos; el rol de miembro no basta.
-
Lina puede cancelar su reserva, pero esta se completó antes de la actualización. ¿Qué control adicional aborda esto?
Ver la respuesta
Respuesta correcta: Comprobar y aplicar la transición permitida de forma coherente con la actualización. Un actor autorizado también necesita una operación válida en el estado actual, incluidos los cambios concurrentes.
-
El cliente móvil omite la regla de botones ocultos de la web. ¿Dónde debe seguir siendo efectiva la política de cancelación?
Ver la respuesta
Respuesta correcta: En el servicio que realiza la operación protegida para todos los clientes admitidos. La presentación puede variar mientras el servicio aplica de forma consistente la regla sobre el recurso.
-
Una explicación de cancelación se muestra como texto plano. ¿Qué diseño conserva mejor ese propósito?
Ver la respuesta
Respuesta correcta: Usar un renderizador de texto y conservar por separado los controles de acceso a la cancelación. El contexto de salida y la autorización de la acción son requisitos independientes.
-
¿Qué registro aportado permitiría distinguir si la operación concreta de otro origen cambió el estado del servidor?
Ver la respuesta
Respuesta correcta: Un registro correlacionado de la aplicación con la decisión de permiso y el estado resultante. Conecta la petición concreta con su tratamiento y efecto, sin inferir el resultado de un mensaje del navegador.
Pruébalo
- EscribeEscribe la decisión para Lina y R42 indicando actor, acción, recurso, regla y resultado. Después cambia un dato para permitir la cancelación. Añade un requisito de transición de estado y un registro necesario para verificar que el servidor aplica la regla.