X-Frame-Options es una cabecera de respuesta HTTP que indica si un navegador debe permitir renderizar una página en un frame, iframe, embed u objeto. Fue introducida como defensa contra ataques de clickjacking y es compatible con todos los navegadores modernos.
La cabecera tiene dos directivas en uso actual: DENY (la página no puede mostrarse en ningún frame) y SAMEORIGIN (la página solo puede ser enmarcada por páginas del mismo origen). Una tercera directiva, ALLOW-FROM uri (permitir el enmarcado desde un origen concreto), está obsoleta; según la referencia de MDN (a julio de 2026), los navegadores modernos ignoran toda la cabecera cuando la encuentran, de modo que usarla elimina la protección sin aviso. Para permitir un origen concreto, usa la directiva frame-ancestors de CSP. Ten en cuenta además que X-Frame-Options solo funciona como cabecera de respuesta HTTP; indicarla en una etiqueta meta http-equiv no tiene efecto.
Aunque X-Frame-Options sigue siendo ampliamente utilizado, la directiva frame-ancestors en Content Security Policy (CSP) es el reemplazo moderno. El frame-ancestors de CSP ofrece más flexibilidad, soportando múltiples orígenes y patrones con comodines. Cuando ambas están presentes, la especificación de CSP (nivel 2) indica que debería aplicarse frame-ancestors e ignorarse X-Frame-Options. Si configuras ambas para cubrir entornos antiguos que no entienden frame-ancestors, mantén los dos valores coherentes para que la protección se conserve en entornos que solo leen una de ellas.
Para los servicios de acortamiento de URL, establecer X-Frame-Options en DENY o SAMEORIGIN en el panel de administración y las páginas de contenido previene que estas páginas sean incrustadas en sitios maliciosos. Los endpoints de redirección típicamente no necesitan protección de frame ya que redirigen inmediatamente en lugar de mostrar contenido.