搜索
查看: 14645|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。. b2 o0 H6 U7 F% ^/ x' O& g. T  v
这次讲一下如何防止自己的网页被别人iframe。. p0 K# ~6 e" [5 v

( E  V  b) A) ~1、这些方法都可行,但不是太可靠。  E5 [1 E' U& O" k+ Y( i
  1. <script language="javascript">
    ( y. W" {$ V) a4 l- e& h
  2. if( top.location != self.location) top.location.href=self.location.href;5 k+ D5 ?7 @5 f7 S) c7 o: Z
  3. </script>
复制代码

, Z3 ~9 F. c% H5 y$ e
  1. <script language="javascript">
    " n% Q+ Z2 A* N9 b+ c
  2. if (top.location != location) top.location.href = location.href;$ c  T! K4 Y# G, A8 @& L. X
  3. </script>
复制代码

& W. i! r3 N/ d/ P! e8 W" |
  1. <script language="javascript">
    ( c! P+ j5 a! S* j
  2. if (top.location != self.location) {top.location=self.location;}( B. \. y/ V4 a6 n, Y4 Q7 @3 `
  3. </script>
复制代码

+ N  z1 Q$ k; o9 d7 ~- N6 y5 S
  1. <script language="javascript">
    ' [- [5 w6 H3 C8 K" N2 C
  2. if (top.frames.length!=0) top.location=self.document.location;
    9 }3 z6 T6 S3 k  c8 i# @- o
  3. </script>
复制代码
不可靠的原因:
4 g* T4 S# K/ c4 X% c5 L当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。- j. A8 s& ]* k* v; S& E4 P% h
  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>7 A* k( [2 [& `0 @& `: y* _
  2. <script language="javascript">
    / W5 q8 D0 i6 Z4 ^0 _! G+ D' L
  3. var location="";' m2 i: P5 X8 S8 w; P/ Q
  4. var navigate="";
    # c. v/ J" N0 H* i
  5. frames[0].location.href="";
      U& H  E8 j2 U1 F3 F3 \4 t9 b
  6. </script>
复制代码

7 W& n2 U9 j5 |& R
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码
# l+ |- ]' `3 W! ?' B

1 u3 ]7 ]9 B! }4 q1 O
  1. <script type="text/javascript" charset="utf-8"># v# l* z3 A& C" r
  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>');
    . T% o) K8 `" o6 s$ f5 R$ Y
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。1 A( q" ]7 o3 q1 f; W* l
Meta标签方法$ z9 ?( {6 _) j- I% L
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法
4 d+ c  d; w2 I/ L! c/ ^0 S2 u
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法
) B- k! s( U  e- M. H
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法
. c0 z6 T( i3 C" e  F6 u$ {( I
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码

9 t. f- X6 [8 Q5 Q7 l; G6 F/ n.htaccess方法
+ N0 A7 q! V4 |在网站根目录下的.htaccess文件中中加一句! I" r1 C1 }4 k
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码

% N1 ?0 ~3 P& [5 cIIS方法0 [7 F( h! J" j) ]1 y; t
在web.config文件中加
  1. <system.webServer>
    - I1 \" N( V. ]: ?; U* o2 x
  2.   ...
    - P' Y4 a) A+ n- N5 L4 R3 z% Q
  3.   <httpProtocol>
    ' \( R4 p; W: C6 M8 n8 Z% W; G- V! D
  4.     <customHeaders>
    0 f9 M( _# ^7 w" f/ X' s
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      2 Y4 R/ O. }4 J, g
  6.     </customHeaders>   
    # b+ ]$ h' D- t
  7.   </httpProtocol>  
    ! q, ?) R# Z  `
  8.   ...
    . d8 D( S) h0 ]8 m" y2 u* k+ M( k" B8 f
  9. </system.webServer>
复制代码

$ a( V& {7 E5 F6 G之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。
1 m! T: f$ c: H6 Y' ^/ U+ h! v! q# U3 ]8 G) c% W5 ^% q
3、推荐解决方法。
& V& E  S* ]) c: m, a% z% B  v; h  P
  1. <script language="javascript">  3 ~2 Z6 _/ S' \9 i% n! B9 ^
  2. if(top != self){
    2 ^  ]% L6 V! w. ]9 Q5 f
  3.     location.href = "http://xp6.org/iframe.html";  + R5 X# [3 r- m4 j! j$ y$ g
  4.     top.location.href=self.location.href;2 ^6 \+ W2 j3 e$ l! Q
  5. }  
    ( ^0 N- z7 G* h
  6. </script>
复制代码
4 j) [0 _, L& k, e7 ?) C
将上面的代码复制到需要屏蔽页面<head>里面加载。
9 K5 q$ i/ T( x制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。
' x& ?2 B- G# j, O原理:
4 g1 K4 b# ]! E第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。
0 B' ?# H7 _( h: P第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。
& ]; ]) L5 O. u8 P$ b3 `, }& ]% l+ i目前测试这种方法没什么问题。
! g" Y9 M" |/ M% S
( m! o7 v) X+ a5 R' U  v3 l, l5 d& K1 _
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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