18 votos

X-Frame-Options Permitir-De varios dominios

Tengo una asp.net 4.0 IIS7.5 sitio que necesito asegurado con la x-frame opción de encabezados

También tengo que habilitar las páginas de mi sitio para ser iframed de mi mismo dominio, así como de mi facebook app.

Actualmente tengo mi sitio configurado con un sitio dirigido a:

Response.Headers.Add("X-Frame-Options", "ALLOW-FROM SAMEDOMAIN, www.facebook.com/MyFBSite")

Cuando he visto mi Facebook página con Chrome o FireFox mis páginas (siendo iframed con mi facebook página) de la pantalla ok, pero en IE9, me sale el error

"esta página no se puede mostrar..." (debido a la X-Frame_Options de restricción).

¿Cómo puedo configurar el X-Frame-Options: ALLOW-FROM para el apoyo de más de un dominio?

X-FRAME-OPTION ser una nueva característica parece fundamentalmente defectuoso si sólo un único dominio puede ser definido.

7voto

vbo Puntos 2347

De RFC 7034:

Los comodines o listas para declarar varios dominios en un solo PERMITEN-DE la declaración no son permitidos

Así,

¿Cómo puedo configurar el X-Frame-Options: PERMITE, DESDE el apoyo de más de un dominio?

Usted no puede. Como solución se puede utilizar direcciones Url diferentes para los diferentes socios. Para cada URL que usted puede utilizar su propia X-Frame-Options de su valor. Por ejemplo:

partner   iframe URL       ALLOW-FROM
---------------------------------------
Facebook  fb.yoursite.com  facebook.com
VK.COM    vk.yoursite.com  vk.com

Para yousite.com puedes usar X-Frame-Options: deny.

Por CIERTO, por ahora Chrome (y todo basado en webkit navegadores) no admite ALLOW-FROM declaraciones.

2voto

Kobi Puntos 65357

X-Frame-Options está en desuso. De MDN:

Esta característica ha sido retirado de los estándares de la Web. A pesar de que algunos navegadores puede que todavía lo apoyan, es en el proceso de ser abandonado. No lo use en viejos o nuevos proyectos. Páginas o aplicaciones Web utilizando se puede romper en cualquier momento.

La alternativa moderna es la Content-Security-Policy encabezado, el cual, junto con muchas otras políticas de " lista blanca las direcciones Url se permite alojar su página en un marco, el uso de la frame-ancestors directiva.
frame-ancestors soporta múltiples dominios e incluso comodines, por ejemplo:

Content-Security-Policy: frame-ancestors 'self' example.com *.example.net ;

Lamentablemente, por ahora, Internet Explorer no es totalmente compatible con Contenido de Política de Seguridad.

-2voto

SinaX Puntos 1

Una posible solución sería el uso de un "marco de separador de secuencia de comandos" como se describe aquí

Usted sólo tendrá que modificar el "si" declaración de comprobar sus dominios permitidos.

   if (self === top) {
       var antiClickjack = document.getElementById("antiClickjack");
       antiClickjack.parentNode.removeChild(antiClickjack);
   } else {
       //your domain check goes here
       if(top.location.host != "allowed.domain1.com" && top.location.host == "allowed.domain2.com")
         top.location = self.location;
   }

Esta solución sería seguro, creo. porque con javascript no está habilitado, no tendrá la preocupación de seguridad acerca de un sitio web malicioso de enmarcar tu página.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X