2010-05-06 8 views
7

Sto costruendo alcuni widget per un ente di beneficenza. A causa di alcune licenze per il logo malarkey, devo trovare un modo per consentire solo ai siti elencati in bianco di eseguire il codice o inviare un messaggio di errore (o qualcosa del genere) piuttosto che il widget.Consenti solo a determinati domini di poter caricare un iFrame

Dobbiamo usare iFrame come pochi siti che li hanno già incorporati. Idealmente, una soluzione PHP sarebbe la migliore, ma JS è ok se necessario.

Quindi, l'unico rivestimento; Posso controllare il dominio in cui è seduto iFrame e inviarlo contenuti diversi?

mi chiedo quali sono le possibilità di essere in grado di fare questo ...

risposta

5

È possibile utilizzare l'intestazione 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

Si dovrebbe davvero usare un hash per questo. Non è necessario eseguire il ciclo su '$ allowed_domains' in questo modo. – friedo

+0

Fantastico! Funziona perfettamente. :) – PaulAdamDavis

+0

L'intestazione HTTTP_REFERER può essere falsificata? Se sì, fare affidamento su questa intestazione non sarebbe sicuro. – ramkumar

Problemi correlati