Cómo navegadores, aplicaciones y gateways utilizan políticas HTTP para controlar origen, contenido, transporte, aislamiento, privacidad y caché
Edición en profundidad - material de estudio y consulta profesional
Por João Ricardo Dutra••Material integral
como políticas declarativas entre servidor, y navegador.
Figura de apertura: los forman una capa declarativa de protección, pero actúan sobre diferentes problemas.
Principio central
Los no corrigen la autorización, la autenticación o la lógica empresarial; gobiernan el comportamiento de clientes e intermediarios.
Edición en profundidad: material de estudio y consulta profesional.
Presentación del capítulo
El capítulo anterior presentó el Top 10 de seguridad de de y mostró que la protección de una depende de controles distribuidos entre el cliente, el navegador, la , el , la identidad, la red y la operación. Este capítulo profundiza en una parte específica de esa defensa: los que instruyen a los navegadores e intermediarios cómo manejar orígenes, contenido ejecutable, transporte seguro, aislamiento de contexto, privacidad y .
, y suelen agruparse como de seguridad, pero resuelven problemas muy diferentes. define cuándo un navegador puede exponer una respuesta obtenida de otra fuente a una aplicación web. limita las fuentes de script, los estilos, los marcos, las conexiones y otros recursos, lo que reduce el impacto de la inyección de contenido. indica al navegador que utilice para un host durante un período de tiempo definido. Ninguno de ellos reemplaza la autenticación, autorización, validación de datos o reparación de vulnerabilidades en el .
Otros cabezales complementan este modelo. Referrer-Policy limita la información enviada al Referer; La política de permisos controla los recursos del navegador; X-Content-Type- reduce las interpretaciones inesperadas; frame-ancestros y X-Frame- manejan la incrustación en marcos; , y participan en aislamiento entre orígenes; -Control protege las respuestas confidenciales contra un almacenamiento inadecuado; Los atributos de las reducen la exposición a scripts, transporte inseguro y solicitudes entre sitios.
El objetivo es construir un modelo mental preciso para la implementación y retroubleshooting. El lector debe saber cómo distinguir una falla real de de una decisión del navegador, reconocer errores de configuración en y , planificar la implementación segura de políticas restrictivas y probar protecciones sin depender únicamente de escáneres automáticos.
Cómo estudiar este capítulo
Para cada encabezado, identifique cinco elementos: quién envía, quién aplica, qué activo protege, qué amenaza mitiga y qué comportamiento legítimo se puede romper. Este análisis evita la peligrosa práctica de copiar un conjunto de sin comprender sus efectos.
Objetivos de aprendizaje
Explique el origen, el sitio, la política del mismo origen y los límites de seguridad del navegador.
Describa solicitudes simples, , credenciales y caché de .
Configure correctamente Access-Control-Allow- y relacionados.
Diferenciar de autenticación, , firewall y seguridad servidor-servidor.
Diseñe una política de seguridad de contenido con directivas, , e implementación de solo informes.
Comprenda , incluya subdominios, precarga y riesgos de implementación incorrecta.
Aplique opciones de tipo de contenido X, ancestros de marco, política de referencia y política de permisos.
Relacionar , y con el aislamiento entre orígenes.
Establezca el -Control y los atributos de para respuestas y sesiones confidenciales.
Implementar, probar y observar en aplicaciones, y .
Estructura del capítulo
26.1 Modelo de seguridad del navegador y declarativos
26.2 Origen, sitio web y Política del Mismo Origen
26.3 : propósito y flujo de decisiones
26.4 Solicitudes simples y de
26.5 de solicitud y respuesta
26.6 Credenciales, , Autorización y comodines
26.7 en y errores frecuentes
26.8 Política de Seguridad de Contenidos: modelo y directivas
26.9 , , scripts dinámicos estrictos y en línea
26.10 Informes e implementación gradual del PEP
26.11 Seguridad de transporte estricta
26.12 Clickjacking, rastreo y protección de marcos
26.13 Política de referencia y política de permisos
26.14 , y
26.15 Control de caché, borrado de datos del sitio y
26.16 obsoletos, y laboratorios
Resumen, lista de verificación, ejercicios, glosario y referencias.
26.1 Modelo de seguridad del navegador y declarativos
Los navegadores ejecutan código proporcionado por múltiples fuentes y necesitan evitar que una página maliciosa lea datos de otra aplicación simplemente porque el usuario está autenticado allí. Esta protección no se implementa mediante un único mecanismo. La Política del Mismo Origen establece un límite básico; permite excepciones controladas; restringe el contenido que se puede cargar o ejecutar; las tienen sus propios atributos; y las políticas de aislamiento reducen el intercambio entre contextos.
Los de seguridad son declarativos: el servidor envía una política y el agente compatible decide cómo aplicarla. Esto crea una diferencia importante entre la seguridad del navegador y la seguridad de la . Un cliente escrito en Java, Python o curl puede ignorar completamente y , porque estos mecanismos no fueron diseñados como control de acceso universal. La aún necesita validar credenciales, autorización, esquema y reglas comerciales en cada solicitud.
La es un punto eficaz para estandarizar los , pero no conoce automáticamente todas las necesidades de la aplicación. Un adecuado depende de los scripts, marcos y conexiones realmente utilizados por cada interfaz. depende de los orígenes de los consumidores y de la política de credenciales. -Control depende de la sensibilidad y la capacidad de compartir. Por lo tanto, la plataforma puede proporcionar valores predeterminados y barreras de seguridad, mientras que el producto mantiene la propiedad de la póliza específica.
Distinción esencial
no protege la contra llamadas externas; controla si un navegador entrega la respuesta a JavaScript desde otra fuente. Un atacante o un sistema servidor-servidor aún puede enviar la solicitud. La autorización y la protección contra el abuso siguen siendo obligatorias.
26.2 Origen, sitio web y Política del Mismo Origen
Una fuente se define conceptualmente por el trío de esquema, host y puerto. ://app.empresa.com y :// .empresa.com tienen diferentes hosts y por tanto diferentes orígenes. ://app.empresa.com y ://app.empresa.com difieren en el esquema. ://app.empresa.com:443 y ://app.empresa.com:8443 se diferencian en el puerto. La ruta no participa en el origen.
El concepto de sitio web está relacionado, pero no es idéntico. Mecanismos como SameSite en las funcionan con la noción de sitio, mientras que usa origen. Dos subdominios pueden ser del mismo sitio e incluso de origen cruzado. Esta diferencia explica escenarios en los que se envía una pero JavaScript no puede leer la respuesta porque la política no autorizó el origen.
La Política del Mismo Origen limita la lectura y la interacción entre contextos de diferentes orígenes. No impide todo el envío de datos entre orígenes: formularios, imágenes, enlaces y otros recursos históricamente realizan solicitudes. La principal protección consiste en restringir la capacidad del script para observar el contenido y manipular objetos de otra fuente. es el protocolo que permite al servidor declarar excepciones controladas para determinadas operaciones.
Tabla 1: el origen está determinado por el esquema, el host y el puerto, no por la ruta.
URL A
URLB
¿Mismo origen?
Razón
https://aplicación.ejemplo.com
https://app.exemplo.com/perfil
si
Mismo esquema, host y puerto.
https://aplicación.ejemplo.com
https://api.exemplo.com
No
Anfitrión diferente.
http://aplicación.ejemplo.com
https://aplicación.ejemplo.com
No
Esquema diferente.
https://aplicación.ejemplo.com
https://app.exemplo.com:8443
No
Puerto diferente.
26.3 : propósito y flujo de decisiones
El intercambio de recursos entre orígenes es un protocolo integrado en el modelo de recuperación del navegador. Cuando un script intenta acceder a una desde otro origen, el navegador agrega el encabezado Origen. La respuesta debe contener que indiquen si esa fuente, método, conjunto de y uso de credenciales están permitidos. Cuando la política no coincide, la solicitud puede incluso llegar al servidor, pero la respuesta no está disponible para JavaScript.
Esta característica produce un síntoma frecuente: el registra el éxito, la devuelve 200, pero la consola del navegador muestra un error de . No hay contradicción. El servidor procesó la operación; el navegador bloqueó la visualización de la respuesta. Por lo tanto, las operaciones con efectos secundarios no pueden depender de como protección contra o acciones inadecuadas.
El navegador puede enviar la solicitud directamente cuando cumple con los criterios para una solicitud simple. En otras situaciones, realice una con OPCIONES. Preflight pregunta al servidor si se aceptan el método y los previstos antes de enviar la operación real. La respuesta positiva puede almacenarse en la caché de un navegador específico durante un período de tiempo limitado.
con : el navegador negocia antes de enviar la operación real
Figura 1: Preflight negocia el permiso; La decisión final de mostrar la respuesta pertenece al navegador.
26.4 Solicitudes simples y de
El término simple solicitud no significa que la operación sea segura para el negocio. Indica que el navegador puede enviarlo sin para mantener la compatibilidad con los estándares web históricos. Métodos como , y pueden participar cuando los y Content-Type permanecen dentro del conjunto permitido por el protocolo. Una aplicación / , por ejemplo, normalmente provoca una .
La utiliza OPCIONES e incluye el método de solicitud de control de acceso. Si el script pretende enviar no seguros, el navegador también incluye Access-Control- - . El servidor responde con métodos y autorizados. La solicitud real sólo se libera cuando la respuesta satisface las comprobaciones del navegador.
La no es autenticación. Algunas arquitecturas cometen el error de requerir un en OPCIONES o reenviar la a servidores que no conocen . Dado que la es una consulta de política realizada antes de la solicitud real, las generalmente la tratan específicamente. Sin embargo, responder permisivamente a cualquier fuente y método también genera riesgo; La política debe derivarse de una configuración confiable.
Ejemplo de y respuesta
OPTIONS /clientes/123 HTTP/1.1
Host: api.empresa.example
Origin: https://portal.empresa.example
Access-Control-Request-Method: PUT
Access-Control-Request-Headers: authorization, content-type
HTTP/1.1 204 No Content
Access-Control-Allow-Origin: https://portal.empresa.example
Access-Control-Allow-Methods: GET, PUT
Access-Control-Allow-Headers: Authorization, Content-Type
Access-Control-Max-Age: 600
Vary: Origin
26.5 de solicitud y respuesta
Origen identifica el origen del contexto que inició la solicitud. Access-Control-Allow- le indica qué origen está autorizado para leer la respuesta. El valor puede ser un origen específico o un comodín en escenarios sin credenciales. Cuando la es dinámica, el servidor debe validar el valor recibido con una y devolver exactamente la fuente aprobada, sin reflejar nunca ningún valor sin verificar.
Access-Control-Allow-Methods y Access-Control-Allow- participan principalmente en la . Access-Control-Expose- permite que JavaScript lea de respuesta que no pertenecen al conjunto expuesto de forma predeterminada. Access-Control-Max-Age influye en la caché de , sujeto a los límites del navegador. Access-Control-Allow-Credentials permite respuestas acreditadas cuando se combinan con una fuente explícita.
Variar: el origen es importante cuando la respuesta puede cambiar según el origen de la solicitud y pasa por cachés compartidos. Sin esta indicación, un caché puede reutilizar una respuesta que contiene un origen-control-permisión-acceso específico para otro origen. En plataformas con o , la clave de caché y la política deben diseñarse juntas.
Tabla 2: el conjunto CORS forma un protocolo de negociación, no un encabezado aislado.
encabezado
Dirección
Función
Origin
Solicitar
Identifica el origen del contexto solicitante.
Access-Control-Allow-Origin
Response
Autoriza una fuente o, en casos limitados, el comodín.
Access-Control-Allow-Methods
respuesta previa al vuelo
Declara métodos permitidos.
Access-Control-Allow-Headers
respuesta previa al vuelo
Declara headers permitidos en la solicitud real.
Access-Control-Expose-Headers
Response
Expone headers adicionales a JavaScript.
Access-Control-Allow-Credentials
Response
Permite responder con credenciales en contexto CORS.
Access-Control-Max-Age
respuesta previa al vuelo
Controla la duración de la caché de verificación previa.
Una solicitud de credenciales puede implicar , certificados de cliente o credenciales controladas por agentes. En la recuperación, el modo de credenciales determina si se envían las credenciales y si se consideran las respuestas con Set- . Para que JavaScript reciba una respuesta de origen cruzado con credenciales, el servidor debe devolver Access-Control-Allow-Credentials: verdadero y un origen explícito.
El comodín en Access-Control-Allow- no se puede utilizar para exponer respuestas con credenciales. Esta restricción reduce el riesgo de que un sitio web arbitrario lea datos asociados con la sesión del usuario. Tampoco es apropiado generar Access-Control-Allow- copiando el recibido sin validación. La reflexión irrestricta convierte la política en una autorización universal disfrazada.
Los atributos de de y SameSite están relacionados pero no son equivalentes. Es posible que la no se envíe debido a reglas de SameSite, Secure o de terceros antes de que se evalúe . En otro escenario, se envía la y el servidor procesa la solicitud, pero el navegador bloquea la lectura de la respuesta. El diagnóstico debe analizar el envío de , la , la respuesta real y la consola del navegador por separado.
regla general
Para las de sesión basadas en , trate , SameSite, y la política de origen como controles complementarios. Para las con un al portador, valide el y la autorización normalmente; El hecho de que el navegador requiera una no hace que el sea seguro frente a clientes externos al navegador.
26.7 en y errores frecuentes
puede centralizar , responder a la sin llegar al y aplicar listas de permitidos por entorno, producto o . Esta centralización reduce la duplicación, pero requiere definir la propiedad. Si la y el agregan diferentes, la respuesta puede contener valores duplicados o contradictorios. Algunos navegadores rechazan respuestas con múltiples Access-Control-Allow- .
La política también debe aplicarse a las respuestas de error. Una que devuelve solo en 2xx puede hacer que el navegador oculte el cuerpo de 401, 403 o 500, dificultando el diagnóstico y la experiencia del cliente. La sección de error o equivalente de la debe producir los mismos relevantes sin abrir permisos adicionales.
Otro error común es permitir fuentes mediante comparación textual insegura. Pruebas como terminaCon("empresa.com") pueden aceptar dominios maliciosos. El valor debe interpretarse como origen y compararse con la exacta o una regla de subdominio cuidadosamente definida. Las expresiones regulares deben anclarse y probarse con esquemas, puertos, normalización de casos y fuentes nulas cuando corresponda.
Tabla 3: Los errores de CORS suelen ser errores de arquitectura y no solo errores de sintaxis.
fracaso
Síntoma
Corrección
OPCIONES requiere autenticación
La verificación previa devuelve 401 antes de la llamada real.
Trate las OPCIONES de acuerdo con la política CORS y no como una operación comercial.
CORS solo en respuestas 2xx
La interfaz ve un error genérico.
Aplique también headers al flujo de errores.
Origen reflejado sin validación
Cualquier sitio web recibe permiso.
Comparar con la lista de permitidos confiable.
Headers duplicados de API Gateway y backend
El navegador rechaza respuestas ambiguas.
Definir un único punto de emisión.
Sin variación: origen almacenado en caché
El origen recibe la póliza de otro origen.
Ajuste la clave Vary y caché.
26.8 Política de Seguridad de Contenidos: modelo y directivas
La política de seguridad de contenido define restricciones sobre los recursos que una página puede cargar o ejecutar. La política se puede enviar en el encabezado Content-Security-Policy o, en casos específicos, por metaelemento. El encabezado tiene mayor y es la forma preferida para políticas completas. no soluciona la vulnerabilidad que permitió la inyección, pero puede reducir lo que puede hacer el contenido inyectado.
Las directivas son especializadas. default-src proporciona respaldo para varios tipos de recursos. script-src controla los scripts; style-src controla los estilos; imágenes img-src; conexiones connect-src realizadas mediante fetch, XHR, y mecanismos relacionados; fuentes font-src; contenido frame-src cargado en marcos; los ancestros del marco definen quién puede incrustar la página; complementos de controles object-src; base- restringe la base; La forma-acción limita los objetivos de la forma.
Una política debe ser mínima y compatible con la aplicación real. Autorizar ampliamente : o usar unsafe-inline y unsafe-eval reduce la protección. Al mismo tiempo, bloquear recursos sin inventario puede interrumpir el inicio de sesión, la telemetría, las fuentes, las integraciones y la funcionalidad legítimos. Por lo tanto, debe construirse a partir de inventario, pruebas y observación, no copiarse de otra aplicación.
: cada recurso se compara con la política antes de cargarlo o ejecutarlo
Figura 2: la política compara cada tipo de recurso con la política correspondiente.
Los scripts en línea son una fuente importante de riesgo porque una inyección de puede convertirse en una ejecución de JavaScript. Eliminar scripts en línea y servir archivos estáticos es la solución más sencilla siempre que sea posible. Cuando la aplicación requiere secuencias de comandos en línea, se puede generar un criptográficamente impredecible por respuesta e incluirlo tanto en el como en el elemento de secuencia de comandos autorizado.
Los le permiten autorizar contenido en línea cuyo texto es conocido y estable. El navegador calcula el del bloque y lo compara con el valor de la política. Los pequeños cambios en el contenido requieren un nuevo . Los son más adecuados para contenido dinámico, siempre que no se reutilicen ni se inserten automáticamente en contenido controlado por el usuario.
estricto-dinámico permite que los scripts confiables cargados por o propaguen la confianza a los scripts que agregan, lo que reduce la dependencia de las listas de hosts permitidos. Esta estrategia requiere pruebas de compatibilidad y comprensión del arranque de la aplicación. unsafe-inline y unsafe-eval deben tratarse como arrendamientos temporales con un plan de eliminación, no como una configuración predeterminada.
Tabla 4: Nonces y hashes permiten reducir la dependencia de inseguros en línea.
Mecanismo
cuando usar
Cuidado principal
Archivo externo en uno mismo
La aplicación controla los scripts en el propio host.
El compromiso del host todavía compromete los scripts.
Nonce
Scripts en línea dinámicos autorizados por respuesta.
Genere valor impredecible y único por respuesta.
picadillo
Bloque en línea estable y conocido.
Cualquier cambio requiere actualizar el hash.
strict-dynamic
Bootstrap confiable carga dependencias.
Validar compatibilidad y cadena de confianza.
26.10 Informes e implementación gradual del PEP
Content-Security-Policy-Report-Only le permite observar violaciones sin bloquear recursos. Es útil para inventariar dependencias y descubrir código en línea, dominios de terceros y flujos no documentados. Sin embargo, la función de solo informar no protege al usuario; es una etapa de implementación. Una organización madura establece una fecha límite para convertir las observaciones en políticas efectivas.
Los informes pueden contener e información confidenciales. El de recopilación necesita control de volumen, retención y privacidad. Los eventos deben agregarse por política, origen y versión de la aplicación para distinguir ataques, extensiones del navegador, ruido y regresiones reales. Una política eficaz y una política de observación pueden coexistir, permitiendo un hardening progresivo.
La implementación recomendada comienza con el inventario, pasa solo por informes, corrige infracciones legítimas, bloquea políticas de menor riesgo y avanza hacia una política restrictiva. Los cambios de deben participar en la canalización y probarse con recorridos críticos, porque un encabezado incorrecto puede hacer que todo el front-end no esté disponible incluso si la se mantiene en buen estado.
no es una lista de dominios confiables
Autorizar un dominio significa aceptar todo el contenido que pueda servir en ese contexto. Las compartidas, los de carga y los servicios de terceros amplían la superficie. Prefiera , y fuentes específicas a listas permitidas demasiado amplias.
26.11 Seguridad de transporte estricta
Strict Transport Security permite que un host declare que solo se debe acceder a él a través de . El navegador almacena la política recibida en una conexión válida y, durante la edad máxima, transforma los intentos a antes de enviar la solicitud a través de la red. Esto reduce la exposición a ataques de eliminación y degradación de después de que se sabe que el host es seguro.
El encabezado tiene la directiva max-age y puede incluir includeSubDomains. Este último extiende la política a los subdominios y requiere un inventario completo: cualquier subdominio sin funcional puede volverse inaccesible. La directiva de precarga se utiliza como señal de intención de precargar programas, pero la inclusión real depende de requisitos y procesos externos al protocolo.
no repara certificados caducados, nombres de host incorrectos o cadenas no válidas. En cambio, el navegador debe fallar considerablemente y no ofrecer una degradación insegura. El primer acceso sigue siendo una consideración cuando el host aún no se encuentra en el estado ; La precarga puede reducir esta ventana, pero aumenta el compromiso operativo a largo plazo.
cambia las decisiones futuras del navegador a un host conocido
Figura 3: Una vez aprendido, hace que el navegador prefiera y rechace la degradación.
26.12 Clickjacking, rastreo y protección de marcos
El clickjacking ocurre cuando una aplicación está integrada de manera invisible o engañosa en otro sitio web y el usuario interactúa con los controles sin darse cuenta del contexto real. La directiva frame-ancestros es el mecanismo moderno para controlar qué orígenes pueden enmarcar la página. X-Frame- ofrece DENY y SAMEORIGIN, que siguen siendo relevantes en compatibilidad, pero carecen de la flexibilidad de una lista de orígenes.
X-Content-Type- : nosniff indica al navegador que respete los tipos en contextos relevantes en lugar de inferir contenido ejecutable. Esto reduce los escenarios en los que un recurso servido con el tipo incorrecto se interpreta como un script o una hoja de estilo. El encabezado no reemplaza el tipo de contenido correcto; ambos deben estar configurados.
frame-ancestros protege los documentos que se pueden enmarcar, mientras que frame-src controla qué marcos puede cargar la página. Confundir las dos directivas produce políticas ineficaces. También es importante tener en cuenta que las puras normalmente no necesitan renderizarse en marcos, pero los portales, las consolas administrativas y las páginas de autenticación necesitan protección explícita.
Tabla 5: La protección del marco y el tipo de contenido son responsabilidades diferentes.
Encabezado o directiva
Ejemplo
Uso
Ancestros del marco CSP
ancestros del marco 'ninguno'
Bloquea la incorporación desde cualquier fuente.
X-Frame-Options
NEGAR o MISMO ORIGEN
Compatibilidad de protección de marcos.
X-Content-Type-Options
nosniff
Reduce el rastreo MIME de recursos ejecutables.
Content-Type
aplicación/json
Declara el tipo real de carga útil.
26.13 Política de referencia y política de permisos
El encabezado Referer puede revelar la de origen de navegación o carga. Cuando las contienen identificadores, parámetros internos o estructuras confidenciales, compartirlas crea un riesgo para la privacidad. La Política de referencia controla la cantidad de información que se envía. Políticas como sin referencia, mismo origen y origen estricto cuando hay origen cruzado ofrecen diferentes niveles de restricción.
La elección debe equilibrar la privacidad, la lucha contra el fraude, el análisis y la retroubleshooting. Rara vez es necesario enviar la completa a terceros. Una política orientada al origen reduce la exposición de rutas y consultas en navegaciones entre orígenes, manteniendo suficiente información para algunos controles. Los datos confidenciales no deben estar en las , incluso con una política restrictiva, porque pueden aparecer en los registros y el historial.
La Política de permisos le permite habilitar o deshabilitar las funciones del navegador para el documento y los marcos, como cámara, micrófono, geolocalización y pantalla completa, según el conjunto admitido. El objetivo es reducir las capacidades disponibles para contenidos propios y de terceros. Se reemplazó la antigua nomenclatura de Políticas de Funciones; Las configuraciones deben utilizar la sintaxis y las capacidades actuales del agente de destino.
Ejemplos de privacidad y capacidades del navegador
Cross- -Opener-Policy controla la relación entre un documento y las ventanas abiertas o abiertas. Al aislar los grupos de contexto, se reducen los ataques y las interferencias que dependen de referencias entre ventanas. Cross- -Embedder-Policy requiere que o puedan compartir explícitamente los recursos integrados de origen cruzado, según el modo adoptado.
La política de recursos de origen cruzado permite que un recurso declare si puede ser cargado por documentos del mismo origen, el mismo sitio o cualquier contexto permitido. Juntos, y pueden producir un aislamiento entre orígenes, necesario para algunas de navegador potentes. Esta configuración debe probarse porque es posible que los recursos de terceros sin los adecuados no se carguen.
Estos no reemplazan a o . controla el acceso programático a las respuestas; protege el recurso contra ciertas cargas de origen cruzado; separa los contextos de navegación; define requisitos de incorporación. La arquitectura necesita saber qué lado publica cada política y cómo se comportan las , imágenes, fuentes y scripts de terceros.
Tabla 6 - Las políticas entre orígenes se complementan entre sí, pero protegen fronteras diferentes.
Mecanismo
Pregunta que responde
Ejemplo
COOP
¿Con qué ventanas comparte este documento el grupo de contexto?
Política de apertura de origen cruzado: mismo origen
COEP
¿Qué características de origen cruzado se pueden incorporar?
Política de inserción de origen cruzado: require-corp
CORP
¿Quién puede subir este recurso?
Política de recursos de origen cruzado: mismo sitio
CORS
¿Qué fuente puede acceder a la respuesta a través del navegador?
Control-de-acceso-permitir-origen: https://app...
26.15 Control de caché, borrado de datos del sitio y
Las respuestas confidenciales pueden permanecer en la memoria caché, el o la del navegador. -Control establece políticas de almacenamiento y reutilización. no almacenar es apropiado cuando no se acepta ninguna retención; privado permite el privado pero no compartido; el no- requiere revalidación antes de su uso; max-age define la frescura. Las directivas deben elegirse según la semántica de la respuesta, no según una sola regla para toda la .
La autenticación no hace que una respuesta no se pueda almacenar en caché automáticamente. Las y las deben considerar la autorización, las , la variación y las reglas explícitas. Una respuesta personalizada almacenada en un caché compartido puede filtrar datos entre usuarios. Por otro lado, deshabilitar todo el caché indiscriminadamente puede degradar el rendimiento y aumentar el costo. El diseño debe separar el contenido público, privado, inmutable y transaccional.
Clear-Site-Data le permite solicitar la eliminación de categorías de datos del sitio web, como caché, y almacenamiento, según el soporte. Puede ser útil para cerrar sesión o responder a incidentes, pero debe usarse con cuidado para no eliminar estados legítimos ni provocar bucles. No reemplaza la revocación de sesión en el servidor.
Set- tiene atributos relevantes para la seguridad. Secure restringe el envío a canales seguros; HttpOnly impide el acceso a través de JavaScript; SameSite influye en el envío en contextos entre sitios; Alcance del control de ruta y dominio; Max-Age y Expires definen la persistencia. Las de sesión y autenticación deben utilizar un mínimo y no contener información confidencial en texto claro.
Tabla 7: la caché y las cookies requieren precisión semántica; Los nombres intuitivos pueden resultar engañosos.
Directiva o atributo
Significado operacional
Precaución
sin tienda
No almacene la respuesta.
Útil para datos altamente confidenciales.
privado
Permitir caché privado, no compartido.
Es posible que aún permanezca en el dispositivo del usuario.
sin caché
Almacenar, pero revalidar antes de usar.
No significa que no haya almacenamiento.
Secure
Envíe cookies únicamente a través de un canal seguro.
Depende de HTTPS implementado correctamente.
HttpOnly
Impedir el acceso por JavaScript.
No impide el envío automático de la cookie.
SameSite
Limite el envío en contexto entre sitios.
La elección depende del flujo de inicio de sesión y de incorporación.
26.16 obsoletos y divulgación de tecnología
No todos los recomendados históricamente deberían seguir implementándose. X- -Protection se relaciona con filtros de navegador más antiguos y no reemplaza a . La fijación de clave pública para generó importantes riesgos operativos y fue abandonada por los navegadores; HPKP no debe reintroducirse como hardening genérico. Expect-CT perdió relevancia con la evolución de la transparencia de los certificados y el soporte de los agentes.
La Política de funciones ha sido reemplazada por la Política de permisos. X-Frame- sigue siendo útil por motivos de compatibilidad, pero frame-ancestros ofrece un control moderno. Pragma es un legado para el /1.0 y no reemplaza una política clara de -Control. La gestión de debe seguir estándares y soporte real, eliminando recomendaciones obsoletas de las plantillas corporativas.
Los como Server y X-Powered-By pueden revelar productos y versiones. Reducir la divulgación evita proporcionar información innecesaria, pero no debe confundirse con corregir vulnerabilidades. Un atacante puede identificar la tecnología mediante otras señales. La prioridad sigue siendo la aplicación de parches, la configuración segura, el inventario y la reducción de superficie.
Tabla 8: La seguridad requiere eliminar controles obsoletos, no solo agregar nuevos headers.
Artículo
Situación recomendada
Alternativa u observación
X-XSS-Protection
No lo trate como control moderno principal.
Utilice CSP y corrija la inyección/XSS.
Public-Key-Pins
No implementar.
Gestionar certificados, CT y automatización de renovaciones.
Expect-CT
No adoptar como un nuevo requisito.
Utilice el ecosistema actual de transparencia de certificados.
Feature-Policy
Migrar.
Utilice la política de permisos.
X-Powered-By
Retirar cuando sea posible.
No reemplaza el hardening ni el parcheo.
26.17 Implementación en aplicaciones, y
La aplicación conoce mejor el contenido y debe participar en políticas específicas de , , caché y recorrido. La puede aplicar valores predeterminados, , , eliminación de divulgación, observabilidad y barreras de seguridad. La puede agregar o normalizar , pero es necesario comprender su posición en la secuencia para evitar sobrescritura y duplicación.
Una política corporativa madura define una matriz por tipo de activo: pública, privada, portal estático, aplicación autenticada, consola administrativa y descarga de archivos. Cada categoría recibe excepciones básicas y aprobadas. Aplicar el mismo a una y a un no tiene sentido; de manera similar, puede ser irrelevante para la integración exclusivamente de servidor a servidor.
La configuración como código y las pruebas automatizadas reducen la deriva. La canalización puede comprobar la presencia, el valor, la duplicidad y la coherencia de los . Las pruebas de un extremo a otro deben validar el comportamiento real en el navegador, porque los servidores , las redirecciones y las respuestas de error pueden cambiar la política. En entornos distribuidos, registre qué componente agregó o eliminó cada encabezado.
orden de responsabilidad
Evite múltiples componentes escribiendo el mismo encabezado sin reglas de precedencia. Defina claramente si la aplicación, la , la entrada, la o el servidor web es la fuente autorizada. La duplicidad puede ser tan peligrosa como la ausencia.
26.18 Retroubleshooting y laboratorios
El diagnóstico comienza en el navegador: la red muestra , redireccionamientos, y ; La consola presenta violaciones de y ; Las herramientas de la aplicación muestran y almacenamiento. Luego compare la respuesta observada en el navegador con curl o un cliente servidor-servidor. Si curl funciona y fetch falla, la diferencia probablemente esté en el modelo de seguridad del navegador, no en la conectividad básica.
Para , verifique Origen, método, solicitados, respuesta de OPCIONES, respuesta real, credenciales, variación y duplicidad. Para , identifique la política violada, la bloqueada, o y la política efectiva. Para , confirme que el encabezado se recibió a través de , el estado del host y la cobertura del subdominio. Para el caché, observe Edad, Control de caché, Variación y el componente que proporcionó la respuesta.
Los laboratorios deben realizarse en ambientes autorizados. Es útil configurar dos fuentes locales en diferentes puertos, observar solicitudes y comprobaciones previas simples, activar credenciales, probar la , implementar solo para informes, introducir un script en línea bloqueado, habilitar con una edad máxima corta y validar en las respuestas de error de la .
Tabla 9 - El diagnóstico debe identificar qué agente aplicó la política.
Síntoma
capa probable
Pruebas para recoger
Error de CORS, backend registrado 200
Política del navegador o respuesta CORS.
Origen, ACAO, credenciales, consola y respuesta real.
El script no se ejecuta después de la implementación
CSP.
Directiva violada, nonce/hash y solo informe.
Subdominio detenido después de HSTS
Incluye cobertura de SubDominios.
Estado HSTS y TLS del subdominio.
Aparecen los datos de otro usuario
Caché compartido.
Cache-Control, Vary, claves y headers de identidad.
El Iframe legítimo ha sido bloqueado
ancestros del marco/XFO.
Política efectiva y origen del incrustador.
Resumen del capítulo
, y son mecanismos distintos. controla el acceso entre orígenes mediado por el navegador; restringe la carga y ejecución de contenido; establece el uso obligatorio de una vez que se conoce la política. Ninguno de ellos reemplaza la seguridad, autenticación o autorización del .
Los complementarios reducen otras clases de riesgo: frame-ancestros y X-Frame- manejan el clickjacking; X-Content-Type- reduce el rastreo ; La Política de referencia mejora la privacidad; La política de permisos limita las capacidades; , y participan de forma aislada; Los atributos de -Control y protegen el estado y las respuestas confidenciales.
La implementación correcta requiere propiedad, implementación gradual, pruebas del navegador, coherencia en las respuestas de error y observabilidad. Las plantillas genéricas sin comprensión pueden dañar las aplicaciones o producir una falsa sensación de seguridad. La política debe reflejar la arquitectura y revisarse a medida que evolucionan los estándares, los navegadores y los productos.
Siguiente paso del curso
El siguiente capítulo profundiza en , Quotas y , mecanismos que controlan el consumo, protegen la capacidad y aplican contratos operativos en .
Lista de verificación de implementación
tiene una explícita y no refleja arbitrariamente el origen.
La se maneja correctamente y no depende de la autenticación de la operación real.
Los también aparecen en las respuestas de error relevantes.
Las respuestas variables por origen utilizan y una clave de caché coherente.
se implementó con un plan de eliminación de inventario, solo informe y evaluación insegura/en línea insegura.
Los scripts en línea autorizados utilizan o correctamente.
se habilitó gradualmente e includeSubDomains fue precedido por el inventario.
frame-ancestros, nosniff, Referrer-Policy y Permissions-Policy tienen valores apropiados para el activo.
, y fueron probados con recursos de terceros.
-Control protege las respuestas personalizadas y confidenciales sin bloquear el caché legítimo de forma indiscriminada.
Las de sesión utilizan Secure, HttpOnly, SameSite y mínimo.
Se han eliminado los obsoletos de la línea base.
Hay un componente autorizado para cada encabezado y pruebas contra duplicaciones.
Los recorridos críticos se prueban en el navegador después de cambios en la , la o la aplicación.
Ejercicios
Explique por qué no impide que un cliente servidor-servidor llame a una .
Diferenciar origen y sitio y relacionar la diferencia con y SameSite.
Describa el flujo de completo para un con autorización y aplicación/ .
Explique por qué Access-Control-Allow- : * no funciona con respuesta acreditada.
Proponer un para un que cargue sus propios scripts y llame a una específica.
Compare , y unsafe-inline.
Explique el riesgo operativo de includeSubDomains en .
Diferenciar entre frame-src, frame-ancestros y X-Frame- .
Compare sin almacenamiento y sin caché con una bancaria de ejemplo.
Explique las diferencias entre , , y .
Configure un plan de implementación de para y sin tiempo de inactividad.
Enumere la evidencia necesaria para investigar un error de que solo ocurre en producción.
Glosario
Tabla 10 - Vocabulario esencial del capítulo.
Término
Definición
Lista de permitidos
Conjunto explícito de orígenes o fuentes autorizadas.
CORS
Protocolo para compartir de forma controlada recursos entre orígenes en el navegador.
CSP
Política que restringe los recursos cargados y ejecutados por una página.
COEP
Política de requisitos para la incorporación de origen cruzado.
COOP
Política de aislamiento entre contextos de navegación.
CORP
Política de recurso declarado sobre carga entre orígenes.
Solicitud de acreditación
Solicitud CORS que utiliza credenciales según el modo de cliente.
HSTS
Política que requiere el uso de HTTPS durante un período determinado.
MIME olfateando
Inferencia del tipo de contenido por parte del navegador en desacuerdo con el tipo declarado.
Nonce
Valor impredecible utilizado para autorizar contenido específico en CSP.
Origin
Combinación de esquema, host y puerto.
verificación previa
Consulta de OPCIONES realizada antes de ciertas solicitudes CORS.
referente
Información sobre el contexto que llevó a la navegación o carga.
Same-Origin Policy
Conjunto de restricciones que separan contextos de distintos orígenes.
Vary
Encabezado que indica las dimensiones de la solicitud utilizadas para seleccionar la representación en caché.
Referencias técnicas
QUÉ. Estándar de recuperación: protocolo , y políticas de recuperación.
QUÉ. Estándar : políticas de origen, navegación y contexto.
. Política de seguridad de contenidos Nivel 3.
. 6797: Seguridad de transporte estricta ( ).
. 7034: Opciones de marco X del campo de encabezado .
. 9110 - Semántica .
. 9111: .
. Política de referencia.
. Política de permisos.
. Borrar datos del sitio.
. Hoja de referencia de y hoja de referencia para compartir recursos entre orígenes.
Nota de actualización
Los y el comportamiento del navegador evolucionan. Antes de adoptar una política corporativa, valide la especificación actual, la compatibilidad de los navegadores de destino y el comportamiento de la versión específica de la , la entrada, la y el marco utilizados.