Как заблокировать вызов Iframe - PullRequest
20 голосов
/ 04 мая 2011

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

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

Ответы [ 5 ]

65 голосов
/ 25 июля 2012

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

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

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

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

.htaccess

Header set X-Frame-Options DENY

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

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
  • Хром: 4.1.249.1042
3 голосов
/ 04 мая 2011

Я не думаю, что вы можете через .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;
}
1 голос
/ 26 января 2016

Вы не можете «принудительно» применить это, так как есть способы, но вы можете использовать стандартный метод заголовка. html5-шаблон имеет хороший фрагмент 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>
0 голосов
/ 12 ноября 2013

вы можете использовать .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 на страницу, не найденную

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

https://stackoverflow.com/a/19773719/1641233

0 голосов
/ 04 мая 2011

Хм, я не думаю, что вы можете.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...