La revisión de proveedor que estás reprobando sin saberlo.
Los encabezados de seguridad son instrucciones que tu servidor envía a los navegadores antes de que cargue una sola palabra de contenido. Son trivialmente verificables por cualquiera, desde cualquier lugar, en segundos, sin permiso.
Ese último punto es el que los negocios pasan por alto. Un prospecto, un competidor, un oficial de compras o un auditor puede calificar tu postura de seguridad sin preguntarte y sin avisarte.
La consecuencia de distribución: los compradores empresariales e institucionales cada vez más corren un escaneo automatizado como paso de precalificación. No les cuesta nada. Una calificación reprobatoria no produce una conversación sobre remediación — produce una remoción silenciosa de la lista de proveedores.
Nunca recibirás ese correo. Ese es todo el problema.
Escanea tu dominio en Mozilla Observatory (developer.mozilla.org/observatory). Anota tu calificación antes de seguir leyendo. La mayoría de los sitios de negocios panameños sacan F.
Si sacaste F, no hay nada mal con tu negocio. Tu servidor simplemente nunca fue configurado para decir nada — y el default es el silencio.
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
Fuerza a los navegadores a usar HTTPS exclusivamente por un año, incluyendo subdominios.
Sin él: Un navegador intentará primero una conexión sin cifrar. En redes no confiables — wifi de hotel, aeropuerto, café — esa petición inicial es interceptable. Los ataques de degradación de sesión dependen de esa brecha.
Content-Security-Policy: default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; object-src 'none'; base-uri 'self'; form-action 'self'
Declara qué fuentes pueden cargar scripts, estilos, imágenes y otros recursos.
Sin él: Cualquier script inyectado se ejecuta con acceso completo a la página — incluyendo acceso a los campos de tu formulario. Este es el encabezado que convierte una vulnerabilidad menor en una brecha de datos.
Nota: Agrega tus dominios de terceros reales a las directivas relevantes. Analítica, procesadores de pago y proveedores de fuentes necesitan permiso explícito cada uno.
X-Frame-Options: DENY
Evita que tu sitio sea embebido en un frame en otro dominio.
Sin él: Clickjacking. Tu sitio renderizado invisiblemente sobre la página de un atacante, para que los usuarios interactúen con tu interfaz creyendo que están en otro lado.
X-Content-Type-Options: nosniff
Impide que los navegadores adivinen los tipos de archivo.
Sin él: Un archivo subido que el servidor etiqueta como imagen puede ser interpretado y ejecutado como un script.
Referrer-Policy: strict-origin-when-cross-origin
Controla cuánta información de URL viaja con los enlaces salientes.
Sin él: Las URLs completas — incluyendo cualquier parámetro — se filtran a cada sitio externo que tus usuarios visitan desde el tuyo. Esto también es una exposición de Ley 81 si esas URLs cargan datos personales.
Permissions-Policy: camera=(), microphone=(), geolocation=(), payment=()
Deshabilita las APIs de navegador que tu sitio no usa.
Sin él: Cualquier script en tu página puede solicitar acceso a cámara, micrófono o ubicación. Quita payment=() si usas un procesador de pago que requiere la Payment Request API.
Cloudflare Pages — crea un archivo llamado _headers en la raíz de tu sitio:
/*
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
Referrer-Policy: strict-origin-when-cross-origin
Permissions-Policy: camera=(), microphone=(), geolocation=(), payment=()
Content-Security-Policy: default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; object-src 'none'; base-uri 'self'; form-action 'self'
Otras plataformas usan mecanismos distintos — Netlify usa el mismo formato _headers, Apache usa .htaccess, nginx usa el bloque de servidor. Los valores de los encabezados son idénticos en todos los casos.
Verifica reescaneando. De F a A suele ser un solo despliegue.
Seis encabezados, pasa o falla. Marca los que tu escaneo ya devuelve — aquí no hay puntaje, solo una lista de brechas. Cada fila sin marcar es una línea más en tu archivo _headers.
La asimetría: esto cuesta una tarde y remueve permanentemente un descalificador silencioso. La mayoría de tus competidores están sacando F ahora mismo y no tienen idea, porque la falla en este canal es invisible desde adentro.