搜索
查看: 15067|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。
' j6 S/ D# c: E4 N这次讲一下如何防止自己的网页被别人iframe。" Z9 j  W! E3 a' s6 @
, q! ?4 I1 S( j
1、这些方法都可行,但不是太可靠。
& q8 m' o$ P% V0 x5 A4 K
  1. <script language="javascript">
    7 ^- {4 g3 ~+ J0 f7 H
  2. if( top.location != self.location) top.location.href=self.location.href;" ^! l- D8 q9 y% ^3 S* P4 d1 U8 U
  3. </script>
复制代码

- [1 g2 P% r5 W3 H. P0 E: c- N: N$ E
  1. <script language="javascript">
    2 l' E4 D5 a0 S- h) L
  2. if (top.location != location) top.location.href = location.href;% t1 O- W8 A- }/ x8 j
  3. </script>
复制代码
% m0 F( z  ]3 i/ s* v& E0 U
  1. <script language="javascript">
    6 C  e# |) q) K, v4 J
  2. if (top.location != self.location) {top.location=self.location;}
    $ s( p" e( [) B7 }' J
  3. </script>
复制代码

" q# m9 N+ p4 j- h( |7 X
  1. <script language="javascript">2 K7 A* n" x' {6 }
  2. if (top.frames.length!=0) top.location=self.document.location;
    + [) k, |7 `+ V- z3 d8 i. A
  3. </script>
复制代码
不可靠的原因:
# g+ O! G7 t" m0 [& a9 e当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。
+ d8 Q+ L" k5 Y1 c
  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>
    0 E2 r$ i% @/ W/ ?7 Z1 K, j
  2. <script language="javascript">
    & _) P0 {5 v1 }0 @
  3. var location="";
    & `& G& k# Z% c, ^1 W
  4. var navigate="";) p3 @) H# P. q6 h
  5. frames[0].location.href="";* N8 Z2 D. k6 b4 {' s! n% B
  6. </script>
复制代码
( Q0 Z" v1 P9 S2 D
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码
7 k8 _5 _7 i3 g5 l1 v, C7 d

% T* _/ q; z: K3 a+ G& d% e
  1. <script type="text/javascript" charset="utf-8">
    ) e' T. p6 ~2 o& u4 T, i4 ^/ S) k% f
  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>');
    0 [6 A5 W& J2 Q# t9 I$ h
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。
! ~9 Q" P5 l& D5 d9 L& JMeta标签方法
% e" a  S4 ?+ S8 i- X
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法
+ K# J; M& Q2 z/ ^
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法: S( N" T2 T% M8 \4 O- ^
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法
" G  I7 a) l7 ]; u* \( E( ~
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码

" d8 d3 h: f% J.htaccess方法
) F" |% n7 m$ L: ^+ ]: z: C% H在网站根目录下的.htaccess文件中中加一句
; T* T9 Z! c3 ?
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码
; a' [; f" N3 V
IIS方法
2 {( q, M$ Z: f* m在web.config文件中加
  1. <system.webServer>
    3 A% g; p& D9 q9 Y# k) C: l0 f& O
  2.   ...
    9 }9 V+ T+ L8 L2 z' H' ]3 j
  3.   <httpProtocol>
    ; z( q9 n# f: U. D* ]8 L: _  _6 e
  4.     <customHeaders>. _5 j& O0 `' z! `; r) k7 ]
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      : o7 o$ z# z' o$ ]2 ]
  6.     </customHeaders>   
    # o4 ~+ |1 X2 I
  7.   </httpProtocol>  
    7 W+ V( q  d. s- I% [
  8.   ...% x3 f$ ?" {* a1 J& W
  9. </system.webServer>
复制代码
# p8 ]- I* l) O. ?5 i
之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。
6 |% A2 C3 J1 {/ r! a6 O/ W! j$ ?" ?% C; Y
3、推荐解决方法。  z4 A+ q& a+ k- a/ X, h
  1. <script language="javascript">  1 s0 |* x! N, l( X
  2. if(top != self){
    $ x. p1 F. ^& c7 M8 J+ f3 b/ D9 F0 n
  3.     location.href = "http://xp6.org/iframe.html";  
    . G$ [( u4 i3 S) j0 r" |
  4.     top.location.href=self.location.href;0 a9 f  Q4 f! v7 \9 |2 t$ I% s, u3 ~
  5. }  
    7 l- U* p! A* Q4 t  p6 ]" D
  6. </script>
复制代码
6 p; P: S4 @7 e* i! m
将上面的代码复制到需要屏蔽页面<head>里面加载。
! c- l% y+ T8 V+ A. B制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。' \  T1 H- q/ H/ F# b( v
原理:# j. C; K. a( ^% s0 G
第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。$ P; Y# \3 O! ]* M5 X
第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。% S3 n4 @% X2 \* `! B
目前测试这种方法没什么问题。
/ W, t. |$ L/ x: F( n6 \* \5 @: Z2 _6 D$ h7 j
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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