2010-05-06 12 views
7

Estoy creando algunos widgets para una organización benéfica. Debido a algunas licencias de logotipos de malarkey, tengo que encontrar la forma de permitir que solo los sitios de la lista blanca ejecuten el código, o enviar un mensaje de error (o algo así) en lugar del widget.Permitir que solo ciertos dominios puedan cargar un iFrame

Tenemos que usar iFrames como una feria que pocos sitios ya han incorporado. Idealmente, una solución de PHP sería lo mejor, pero JS está bien si es necesario.

Entonces, el delineador; ¿Puedo verificar el dominio en el que se encuentra iFrame y enviarle contenido diferente?

Me pregunto cuáles son las posibilidades de ser capaz de hacer esto ...

Respuesta

5

Usted puede utilizar el encabezado HTTP_REFERER.

<?php 

$allowed_domains = array(
     'a-good-domain.com', 
     'another-nice-one.org', 
     ); 

$allowed = false; 
foreach ($allowed_domains as $a) { 
    if (preg_match("@https?://$a/.*@", $_SERVER['HTTP_REFERER'])) { 
     $allowed = true; 
    } 
} 

if ($allowed) 
    echo "Nice domain"; 
else 
    echo "Ugly domain"; 
+1

Realmente debe usar un hash para esto. No hay necesidad de repetir '$ allowed_domains' de esa manera. – friedo

+0

¡Impresionante! Eso funciona perfectamente. :) – PaulAdamDavis

+0

¿Se puede falsificar el encabezado HTTTP_REFERER? De ser así, confiar en este encabezado no sería seguro. – ramkumar

Cuestiones relacionadas