2011-03-07 20 views
13

Opero un servicio donde el contenido de un cliente se prepara y se muestra en un iframe. Luego, el cliente copia una etiqueta html iframe rudimentaria y la pega en su página web. Algunos clientes se quejan de que otros sitios web están copiando la etiqueta iframe y pegándola en sus sitios.Cómo limitar la visualización del iframe desde un sitio externo a dominios específicos solamente

¿Es posible restringir la visualización del contenido de un iframe a un dominio o dominios específicos? Tal vez al decirle programáticamente al iframe que su padre debe ser some-domain.com o no mostrar.

¿Tiene esto sentido? A veces puedo ser demasiado detallado.

Respuesta

11

puede usar un .htaccess (suponiendo que el contenido original esté en un servidor Apache) para limitar el acceso a una IP específica.

O, si la página es un PHP, se puede limitar a un dominio específico, como esto:

<?php 
$continue = 0; 
if(isset($_SERVER['HTTP_REFERER'])) { 

    //correct domain: 
    $ar=parse_url($_SERVER['HTTP_REFERER']); 
    if(strpos($ar['host'], 'yourdomain.com') === false){ 
    } else { 
     $continue = 1; 
    } 

} 

if($continue == 0){ 
    header('HTTP/1.0 403 Forbidden'); 
    exit('Forbidden'); 
} 

?> 
+0

Está haciendo una suposición _huge_ aquí, que el servidor web se puede modificar así. – Oded

+0

@Oded ¿cuál es la suposición hecha? Que el referer es correcto? Por favor explique. – Marci

+0

@Marci - él asume que tiene acceso y puede cambiar el archivo '.htaccess' (y que está usando Apache). – Oded

1

suena como un cheque que es mejor hecha lado del servidor - se puede comprobar el marcado de marco flotante en contra una lista de nombres de dominio válidos (o nombres de dominio principales) y rechazarla si no son válidos.

Puede hacer todo lo anterior en javascript, antes de insertar el iFrame en la página, pero si javascript está desactivado, su validación no funcionará, sin mencionar que con las herramientas de desarrollo en el cliente, cualquier javascript puede ser modificado.

+0

esto debe hacerse en el sitio de contenido, ya sea mediante la creación de secuencias de comandos del servidor, la configuración del servidor o tal vez un javascript, pero como dijo si está desactivado, esa opción no funcionará. – jackJoe

Cuestiones relacionadas