搜索
查看: 14687|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。; D8 k, y0 X# a: t( ~% H
这次讲一下如何防止自己的网页被别人iframe。$ m# {0 v( Q( Q% ]+ N8 Z

+ v4 x/ Z" I" b& x0 I1、这些方法都可行,但不是太可靠。
& `* c0 z: L; w
  1. <script language="javascript">  F# R8 G. z- z- l
  2. if( top.location != self.location) top.location.href=self.location.href;* R1 _% W, D+ O7 L# K% O6 k) U
  3. </script>
复制代码
+ g8 v4 H3 ^8 R* J6 A9 E; e
  1. <script language="javascript">4 _! ]# Y% `0 r" c) ~2 e) J- L/ {
  2. if (top.location != location) top.location.href = location.href;
    0 v: r* W% X( O
  3. </script>
复制代码

' ]& @4 x1 e5 x. ~
  1. <script language="javascript">
      R$ O# c, n9 }  G+ ^) T5 P( I
  2. if (top.location != self.location) {top.location=self.location;}- \9 \; c% T* ~" n$ m
  3. </script>
复制代码
! K4 K$ |  Y! j) K; u" v( k2 y
  1. <script language="javascript">$ ^' D7 ~* V3 @- z
  2. if (top.frames.length!=0) top.location=self.document.location;9 J, a8 j9 v1 T$ L! c% x: t6 W& I6 w
  3. </script>
复制代码
不可靠的原因:
0 A6 [+ q1 B  @2 N$ r当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。- x; z( G, k$ M
  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 ^8 f/ {$ c6 X% T0 j
  2. <script language="javascript"> # U4 R1 G( z; |# q  Q& H
  3. var location="";/ M2 d) m9 h* O
  4. var navigate="";5 n6 S$ H, n+ m. Y+ {% Z( y# ?
  5. frames[0].location.href="";3 h' O9 M5 y) j' E) x
  6. </script>
复制代码
7 C3 A2 s) R" t% v2 h! u4 x
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码
$ w& ]' O. V. ~& |. c

3 a1 A8 J# W* G, C8 C
  1. <script type="text/javascript" charset="utf-8">
    ; ~" d5 n& Z1 x1 Q5 B7 K: s/ x
  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>');- G& }) n3 N9 c0 k. }% {6 @% w6 c
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。
" ]' P' h' _, uMeta标签方法
; B7 i: x$ @0 ?+ h
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法* C3 H1 ?4 y0 G, l, B8 |6 Q4 @& M2 d
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法# r( |' A: t# R+ A% O; r; {9 o; S2 Y
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法8 ~" M9 I8 f1 K& E1 [$ X& E
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码
6 C+ c- F! O4 A) c) A+ T
.htaccess方法
" ?, k& y4 d& y0 d在网站根目录下的.htaccess文件中中加一句
  p+ r; _  R$ f. k
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码
6 b$ \2 @; |/ Z- h& e3 s. A7 k  }  @; Y
IIS方法2 q% b7 M5 H2 t1 z/ e
在web.config文件中加
  1. <system.webServer>
    1 U2 Y1 \; ~( a9 n. L$ W
  2.   ...2 N3 Q1 R3 p- _5 N, j2 ?! R
  3.   <httpProtocol>
    ) c; I1 D# [5 F
  4.     <customHeaders>
    3 a" O! h$ F6 w# l5 q& V% p
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      ; a5 v% \8 f: @: V* R* |1 c- E
  6.     </customHeaders>    * {* C8 _- P/ K
  7.   </httpProtocol>  
    ! F0 F" ~1 Y, T2 A) E7 @
  8.   ...
    $ E; q; B0 }6 z  K( g
  9. </system.webServer>
复制代码

7 c8 _5 V+ c$ ]# }, [5 Y之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。! |# t4 {+ I% D. F7 E, ]8 p

& F4 w1 F8 K  d0 V1 N# I3、推荐解决方法。
3 l: ?2 l) M) L! d
  1. <script language="javascript">  
    # ]) ~3 E! ~+ A
  2. if(top != self){: L, d3 B+ L  k" S1 W
  3.     location.href = "http://xp6.org/iframe.html";  
    ; H* l4 M. [, P0 d* w
  4.     top.location.href=self.location.href;; b7 n5 R7 i% u6 G* F
  5. }  
    * h" K  P3 R3 T4 T
  6. </script>
复制代码

" S$ j" I% |  j6 f  y; l将上面的代码复制到需要屏蔽页面<head>里面加载。
9 `: [& K$ R4 l$ l制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。5 m  w, y9 T0 {8 d6 [3 ~
原理:. t! i) _" Y# M" v) l! s) h
第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。/ [" w: P! }# ^1 p/ M
第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。) n7 r" k2 M% z5 L4 M" S" w0 t0 ?8 g- _
目前测试这种方法没什么问题。
! j& G5 x4 c: x+ ?4 E$ D0 h( }8 r  w; |2 j" l, d
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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