Как ограничить отображение iframe только с внешнего сайта на определенные домены

Я управляю службой, где клиентский контент готов и отображается в iframe. Затем клиент копирует рудиментарный тег iframe html и вставляет его в свою веб-страницу. Некоторые клиенты жалуются, что другие сайты копируют тэг iframe и вставляют его на свои сайты.

Можно ли ограничить отображение содержимого iframe определенным доменом или доменами? Возможно, программно говоря iframe, что его родитель должен быть some-domain.com или иначе не отображаться.

Это имеет смысл? Иногда я могу быть слишком многословным.

Ответы

Ответ 1

вы можете использовать .htaccess(предполагая, что исходное содержимое находится на сервере Apache), чтобы ограничить доступ к определенному IP-адресу.

Или, если страница является PHP, вы можете ограничить ее определенным доменом, например:

    <?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');
}

?>

Ответ 2

Похоже на проверку, которая лучше сделана на стороне сервера - вы можете проверить разметку iFrame на список допустимых имен доменов (или родительских доменных имен) и отклонить ее, если они недействительны.

Вы можете сделать все вышеперечисленное в javascript, прежде чем вводить iFrame на страницу, но если javascript выключен, ваша проверка не будет работать, не говоря уже о том, что с инструментами разработки на клиенте можно изменить любой javascript.