搜索
查看: 14604|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。
2 {0 u9 z' @* ~. Y这次讲一下如何防止自己的网页被别人iframe。; ]1 U3 ], L: _" ~! }$ z2 z
7 c+ \( H' F- ]' z1 s' G, l  W& B
1、这些方法都可行,但不是太可靠。
  r4 F5 x, W- a8 t* C, n  d6 U
  1. <script language="javascript">9 J# e' n: u- a! }/ t. P( o5 v% u
  2. if( top.location != self.location) top.location.href=self.location.href;- h: E6 }) F9 [1 V
  3. </script>
复制代码

5 O9 k* h* ^- F
  1. <script language="javascript">
    : [. g3 d( `8 w/ m8 I8 W* P. u
  2. if (top.location != location) top.location.href = location.href;3 |3 H  }* X/ c) ^- O
  3. </script>
复制代码
! Z: l2 ?) s+ [: |" Z7 ?# G# H. a
  1. <script language="javascript">) t# @8 w/ |* P
  2. if (top.location != self.location) {top.location=self.location;}
    3 A. Q. Q5 G$ d) l. C
  3. </script>
复制代码
) v. ~3 \$ e$ r- N
  1. <script language="javascript">
    ) T) H. B( o  O8 X+ D, _% l7 H
  2. if (top.frames.length!=0) top.location=self.document.location;4 Q' e4 Z2 R, D5 W0 u
  3. </script>
复制代码
不可靠的原因:4 P* ^; ~6 _, @$ Q( ?  G  J
当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。
, K  I$ [7 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>3 Z8 n+ K  T  B6 |) ?* Z
  2. <script language="javascript"> 0 U% w7 d8 b  i" M/ k; b) g
  3. var location="";1 m: S$ S- T) b1 G% c6 {
  4. var navigate="";1 ]' X3 g& o1 ^9 e; |# K* M
  5. frames[0].location.href="";
    ( w! b6 K$ ?  Z) G
  6. </script>
复制代码
* _8 J, d) S5 q5 B: m% ]
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码
2 @8 I) S/ D+ w" U% l& ]9 d
; C; `: U  F. Q
  1. <script type="text/javascript" charset="utf-8">! Z# w( q3 e0 Q4 C! H; M& P
  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>');7 _; k0 z5 N6 K% [4 l
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。2 Y" N, A( ~! k0 e
Meta标签方法
6 d% h4 A% @7 u. C, w
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法0 w  w, s1 @% t( r7 ^5 i
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法6 `2 H, l  m8 U5 G* q
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法
3 k* P6 t& S0 I0 b$ l' M
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码
/ S6 d' u# M; Y5 S- _" i# x0 |
.htaccess方法
/ ~, q8 ?/ D1 I在网站根目录下的.htaccess文件中中加一句: N* c+ E% P/ L. I4 y
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码

/ t1 j0 X% H' X2 f/ S6 UIIS方法
, T# t' F" [( W" f% Q在web.config文件中加
  1. <system.webServer>: p4 j' J9 |7 x( Y* D0 y/ w5 d
  2.   ...: m; m$ v; n3 K3 |( j' j" ~
  3.   <httpProtocol>! U- j- g1 ~0 X
  4.     <customHeaders>
    : [* P* _: f) T) c
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      $ w3 o1 z7 J) w6 |9 q
  6.     </customHeaders>    " ~. w7 B+ `5 a, r5 y
  7.   </httpProtocol>  % a/ I. o: Z4 a. \( A+ b9 B
  8.   ...2 Q+ L4 v/ {0 a$ J) n4 n  T" G+ @
  9. </system.webServer>
复制代码

9 |8 z  K# g# D$ f$ t* d之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。
- l6 }4 \. J8 F, e4 g
5 D2 @% n5 Z  }2 R3、推荐解决方法。
" e6 |" S+ c. y, E2 Q
  1. <script language="javascript">  
    6 {/ i1 A  N0 [7 c' u; }! Y/ b. m
  2. if(top != self){
    * u9 s/ L( d( c8 t. x- {. [
  3.     location.href = "http://xp6.org/iframe.html";  
    1 {7 j5 P0 }; A' h+ {3 F
  4.     top.location.href=self.location.href;
    & l+ f% o8 x: K% {" l9 A& D9 x
  5. }  # ^5 P. J. @7 \4 d' e
  6. </script>
复制代码

3 ]  ^. I' \: s  a- {2 O) ]; k将上面的代码复制到需要屏蔽页面<head>里面加载。9 K% W8 E  Z0 C! _; i4 t
制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。
. i4 i9 o' t' y* i$ G" O1 Z# j) O原理:
: k2 K# \8 u1 R  U, n( k第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。
# K& J6 I  P) ~3 |( e6 T" n( j1 m7 `第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。
8 q" A9 g; E2 ^% t& X目前测试这种方法没什么问题。; ]* l4 m( u0 `7 |1 A! `  G7 x
  `$ H! ]. a* H
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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