搜索
查看: 12426|回复: 0

[网站] 如何防止自己的网页被别人iframe嵌入

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。
: W" T9 E0 p  k& F# f这次讲一下如何防止自己的网页被别人iframe。7 L! {7 X' m9 G+ _4 C
. I% z& T0 ~9 |
1、这些方法都可行,但不是太可靠。
3 `0 |3 @; Q+ |8 K! S/ f$ D) G; {
  1. <script language="javascript">
      J2 d/ w# k! w
  2. if( top.location != self.location) top.location.href=self.location.href;
    * h0 ]& n' `( m' F0 \
  3. </script>
复制代码
6 }/ K. V2 ~6 t" B
  1. <script language="javascript">
    # y- h7 T3 a0 F, [% S
  2. if (top.location != location) top.location.href = location.href;
    1 j( c4 Y5 W4 W& Z% [
  3. </script>
复制代码

7 [6 I' O6 @5 ~  z
  1. <script language="javascript">
    : O4 {; S% T  ~) i  Y( x  j  e8 l
  2. if (top.location != self.location) {top.location=self.location;}" u. K1 Q6 Z/ V3 Z7 b
  3. </script>
复制代码
, b8 p+ i' o/ g9 I" Z' Z
  1. <script language="javascript">& `5 ]$ w) B+ D8 t) q" H" ]
  2. if (top.frames.length!=0) top.location=self.document.location;6 g! @3 J& O3 L( P. F7 V
  3. </script>
复制代码
不可靠的原因:
+ \- n6 K- c  p& P0 }2 m9 [  X当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。2 @7 t( }8 X6 |) y
  1. <iframe src="http://xp6.org/" name="tv" marginwidth="0" marginheight="0" scrolling="No" noResize frameborder="0" id="tv"  framespacing="0" width="580" height="550" VSPACE=-145 HSPACE=-385></iframe>& v8 m+ Q! l8 P8 \% ]  N0 X; D
  2. <script language="javascript">
    : G: E( k. r: |& B
  3. var location="";) _1 Y/ I# k( |" \3 G
  4. var navigate="";
    6 f% ?* Q; y4 p6 A7 I5 i5 ]: s
  5. frames[0].location.href="";
    ) B6 N  X7 j+ u/ C4 f' K, y
  6. </script>
复制代码
; c$ o, @, Z' `) H
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码

. Q9 Z! y  Z. [% z6 A( r! H7 ?
. j* F7 Q/ y/ t9 {( @
  1. <script type="text/javascript" charset="utf-8">
    : r4 d  g) q0 y8 a$ O
  2. document.write('<iframe seamless sandbox security="restricted" id="url_mainframe" frameborder="0" scrolling="yes" name="main" src="http://xp6.org/" style="height:100%; visibility: inherit; width: 100%; z-index: 1;overflow: visible;"></iframe>');
    5 X2 D+ B: ~$ f- q1 o! x+ p& T
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。, ~0 _0 N+ a; y  T- g9 @! f
Meta标签方法
. E' t% M2 l+ ~; Q
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法, X) {7 ^$ u6 C: U+ U* _- N1 T9 @
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法9 y4 Q! ~* n" `4 _6 S1 L
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法
* C2 r- I* }" d! o
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码
+ e6 M: V! Z+ h+ d) q8 I0 u9 k, E& \
.htaccess方法
5 P8 Z% I9 d7 ^! {在网站根目录下的.htaccess文件中中加一句
! P& B0 P% U% w. H* m+ D1 b; g/ G3 [
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码

0 Z7 B9 J9 O- D3 q7 lIIS方法+ l, \+ ^# d8 W4 }/ H% C
在web.config文件中加
  1. <system.webServer>
    / `5 u6 D% l: `; I! a2 e! k) J4 y
  2.   ...$ ]; e% K+ }* c* K" L
  3.   <httpProtocol>$ x2 C) q1 K8 d9 I3 [
  4.     <customHeaders>
    / i! ^0 W; a6 B1 |
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      
    . v+ k- Z' f- o7 N, ]) t8 D
  6.     </customHeaders>    1 F( l3 _( M9 k  R' j$ Q
  7.   </httpProtocol>  ( a& I( ~; f: ?; B; m( b( B3 T4 H' N
  8.   ...
    ) {: G0 D: j9 }- J9 f
  9. </system.webServer>
复制代码

) r9 A" j1 M$ s- A之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。
" T% V# V- U. {, U! o5 M, i  @8 D7 u6 z
3、推荐解决方法。* H+ s6 `! _' g% g! `- j
  1. <script language="javascript">  " t' f. c4 t- R2 @, E
  2. if(top != self){
    ( h6 @( K3 E/ U- a
  3.     location.href = "http://xp6.org/iframe.html";  ; P6 X0 A( \/ N
  4.     top.location.href=self.location.href;
    4 S' a1 w; z& V* _6 H
  5. }  
    9 j& u& V- E) ^! f0 w
  6. </script>
复制代码
. S! V) @) N9 S! I8 m
将上面的代码复制到需要屏蔽页面<head>里面加载。2 r/ @9 F2 \% u) i+ g" [
制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。
9 l  A4 _1 T2 B8 J/ X* k+ N% s原理:8 c+ \% m* X8 i( ^/ `( z( o
第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。
1 m; P$ C+ Q+ M$ K. v; o第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。# y- W% [# j$ ]% X2 w
目前测试这种方法没什么问题。
1 E) K9 ~2 |( h* s8 @
8 [  Q. |5 B9 K5 h; z( T
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

热议作品
精华帖子排行
精彩推荐

虾皮社区,成立十年了!

站长自己也搞不懂想做个什么,反正就是一直在努力的做!

Copyright © 2007-2019 xp6.org Powered by Discuz

QQ|Archiver|手机版|小黑屋|虾皮社区 鲁公网安备 37021102000261号 |网站地图
返回顶部 返回列表