如何阻止Iframe呼叫

最近,我的完整的网站是由两个其他领域的iframe调用。 我想阻止其他网站,谁试图在iframe中显示我的网站。

我怎样才能通过.htaccess阻止?

您可以在标题X-Frame-Options:Deny中设置variables。

所有现代浏览器都支持X-Frame-Options标题。

Facebook使用这个头来禁用iframe / framesets(也是Javascript)。

如果你在apache中启用了mod_headers:

的.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

我不认为你可以通过.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; } 

由于存在解决方法,您不能“强制执行”,但是您可以使用标准标头方法。 html5-boilerplate有一个很好的vhost / htaccess代码片段,首先将X-Frame-Options为你select的DENY/SAMEORIGIN/ALLOW-FROM ,然后允许白名单MIMEtypes用于良好的框架,如Google图片search。

查看最新的链接,但以下是2016年1月25日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> 

您可以使用.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为此代码将redirect从bad.com的任何请求到未find的页面

这个解决scheme有助于这个答案

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

呃,我不认为你可以。

iframe是客户端容器,这意味着最终用户浏览器负责在iframe中加载内容。 你将无法辨别你的页面是否加载到iframe中。