javascript - modificar - ¿Es posible evitar que nuestro sitio web se ejecute dentro del conjunto de marcos o IFrame de otro dominio?
ventana hija javascript (4)
Recientemente hemos tenido un problema en el que otros sitios ejecutan nuestro sitio de comercio electrónico dentro de un conjunto de marcos en el que nuestro sitio (con la identificación del afiliado atacado) es el único contenido en un solo marco de ancho completo. Así que, en esencia, se ve y se siente como nuestro sitio con su URL en la parte superior. Podemos cortar su identificación de afiliado, lo que haría que no tenga sentido que lo hagan, pero esto no evita que los futuros delincuentes hagan lo mismo hasta que lo descubramos.
¿Existe alguna forma genérica (a través del JavaScript que aparece en cada página, tal vez?) Para evitar que esto suceda? Tenga en cuenta que agregar objetivos a todos los enlaces no es factible, pero agregar un fragmento de JS a todas las páginas es, ya que las porciones de encabezado y pie de página se comparten en todo el sitio desde una sola fuente.
Otra posibilidad sería en el nivel Apache (si hay algo que pudiéramos hacer en el lado del servidor) ya que pasamos todas las solicitudes a través de mod-rewrite.
Tenga en cuenta que sería esencial permitir que las páginas se carguen dentro de un IFrame si la página principal proviene de nuestro dominio, ya que hacemos un uso válido de IFrames.
He escuchado que las soluciones a este problema se conocen como "script de frame popper". Un google rápido aparece con este hilo . Parece que este es uno de los más simples:
if (window != top) top.location.href = location.href;
Mira este articulo. Ofrece una solución bastante simple para detectar marcos y romperlos.
Cómo salirse de marcos con JavaScript
Además, lo llevaría un paso más allá. Cada vez que detecte un marco, tome la identificación de afiliado del enmarcador del sitio ofensor e introdúzcalo en el servidor con AJAX junto con la URL que está utilizando. Luego, de forma automática o manual, puede verificar que están configurando su sitio y cancelar su código de afiliado de a uno por vez.
Solo estoy adivinando aquí ... ¿pero qué pasa si usa javascript para llamar a su ventana principal para acceder a su objeto de documento? Puede comprobar si no es nulo, y si hay una ventana principal (es decir, un marco cargado en su sitio), puede ocultar todo su html a través de javascript ...
Creo que el método moderno adecuado para lograr esto es con el encabezado de respuesta de X-Frame-Options .
Desde el MDN:
El encabezado de respuesta HTTP de X-Frame-Options se puede usar para indicar si un navegador debe permitir o no presentar una página en un marco o un iframe. Los sitios pueden usar esto para evitar ataques de clickjacking, asegurándose de que su contenido no esté incrustado en otros sitios.
Eche un vistazo a: Cómo evitar que IFRAME redirija la ventana de nivel superior