2010-05-06 14 views
7

Buduję niektóre widżety dla organizacji charytatywnych. Z powodu jakiegoś malarkeyu licencjonowania logo, muszę znaleźć jakiś sposób zezwalania tylko na zezwalanie na uruchamianie kodu na białej liście stron lub wysyłanie komunikatu o błędzie (lub coś podobnego) zamiast widgetu.Zezwalaj tylko niektórym domenom na ładowanie iFrame

Musimy używać iFrames, ponieważ kilka witryn już je umieściło. Idealnie, rozwiązanie PHP byłoby najlepsze, ale JS jest w porządku, jeśli zajdzie taka potrzeba.

Tak, jeden liniowiec; Czy mogę sprawdzić domenę, w której znajduje się iFrame i wysyłać inną treść?

Zastanawiam się jakie są szanse, że będzie mógł to zrobić ...

Odpowiedz

5

Można użyć nagłówka 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

Powinieneś użyć skrótu do tego. Nie trzeba w ten sposób przechodzić przez '$ allow_domains'. – friedo

+0

Awesome! To działa idealnie. :) – PaulAdamDavis

+0

Czy nagłówek HTTTP_REFERER może zostać sfałszowany? Jeśli tak, poleganie na tym nagłówku nie byłoby bezpieczne. – ramkumar

Powiązane problemy