Подтвердить что ты не робот

Как заблокировать вызов iframe

Недавно мой полный сайт вызывается в iframe двумя другими доменами. Я хотел бы заблокировать другие сайты, которые пытаются показать мой сайт в iframe.

Как я могу заблокировать это через .htaccess?

4b9b3361

Ответ 1

Вы можете установить переменную в заголовок X-Frame-Options: Deny.

Все современные браузеры поддерживают заголовок X-Frame-Options.

Facebook использует этот заголовок для отключения iframe/framesets (также Javascript).

Если вы включили mod_headers в apache:

.htaccess

Header set X-Frame-Options DENY

Но вы можете включить iframe из одного источника.

Header always append X-Frame-Options SAMEORIGIN

Или в Nginx:

add_header X-Frame-Options Deny; #or SAMEORIGIN

Совместимость с браузером: Источник

  • Internet Explorer: 8.0
  • Firefox (Gecko): 3.6.9 (1.9.2.9)
  • Опера: 10.50
  • Safari: 4.0
  • Chrome: 4.1.249.1042

Ответ 2

Я не думаю, что вы можете через .htaccess, вы можете использовать JS. Вы можете использовать такую ​​функцию, чтобы проверить:

function parentIsSameOrigin()
{
    var result = true;
    if (window.parent)
    {
        result = Boolean
        (
            // more precise modifications needed here
            window.this.location.href.indexOf(window.parent.location.href) == 0
        );
    }
    return result;
}

Ответ 3

Вы не можете "принудительно применять" его, поскольку есть способы обойти, но вы можете использовать стандартный метод заголовка. html5-boilerplate имеет хороший фрагмент vhost/htaccess, который сначала устанавливает X-Frame-Options как ваш выбор DENY/SAMEORIGIN/ALLOW-FROM, а затем разрешает типы MIME для белых списков для использовать в хороших кадрах, таких как поиск изображений Google.

Проверьте ссылку на последнюю, но вот пример с 25 января 2016 года в режиме SAMEORIGIN:

<IfModule mod_headers.c>

     Header set X-Frame-Options "SAMEORIGIN"

     <FilesMatch "\.(appcache|atom|bbaw|bmp|crx|css|cur|eot|f4[abpv]|flv|geojson|gif|htc|ico|jpe?g|js|json(ld)?|m4[av]|manifest|map|mp4|oex|og[agv]|opus|otf|pdf|png|rdf|rss|safariextz|svgz?|swf|topojson|tt[cf]|txt|vcard|vcf|vtt|webapp|web[mp]|webmanifest|woff2?|xloc|xml|xpi)$">
         Header unset X-Frame-Options
     </FilesMatch>

</IfModule>

Ответ 4

вы можете использовать .htaccess следующим образом

RewriteEngine On

RewriteCond %{QUERY_STRING} !^id=[^&]+ [NC]
# if referrer is bad.com
RewriteCond %{HTTP_REFERER} (www\.)?bad\.com [NC]
# then redirect to a different page
RewriteRule !^404.shtm [L,NC,R=302]

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

это решение способствовало этому ответу

fooobar.com/questions/302211/...

Ответ 5

Умм, я не думаю, что ты можешь.

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