搜索
查看: 14453|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。
# b$ d3 u1 `* O' {这次讲一下如何防止自己的网页被别人iframe。
. D; v1 @8 z" F. t2 r# d- P  }1 W; K# e7 U
1、这些方法都可行,但不是太可靠。* B' g- D; L/ z9 u2 j- t( h9 {
  1. <script language="javascript">3 M5 Q  ]. V1 ^4 X
  2. if( top.location != self.location) top.location.href=self.location.href;6 y6 c6 L, w* T- C
  3. </script>
复制代码
: w/ Q. y/ s& a$ E8 X0 y& v+ L9 Q
  1. <script language="javascript">) W* L3 m/ T. P4 h) E8 ?& ]/ v1 q( A
  2. if (top.location != location) top.location.href = location.href;1 ?$ a$ x1 d) d
  3. </script>
复制代码
( g, \6 N; J% E! P$ }
  1. <script language="javascript">
    0 _( ]6 _) ?/ @
  2. if (top.location != self.location) {top.location=self.location;}
    $ Z9 y- n% g1 \$ j4 \
  3. </script>
复制代码
! B: Z1 o) \1 s# {- n( c) r& U
  1. <script language="javascript">" V) V* K; J5 }8 @  T
  2. if (top.frames.length!=0) top.location=self.document.location;
    + w3 e1 p# m% t) a" [
  3. </script>
复制代码
不可靠的原因:" j  F4 b; B9 @! y
当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。: t8 `0 k0 Y5 t6 {( d+ T4 K
  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>
    9 R# u% u. {& m. E5 `2 }( |; |
  2. <script language="javascript">
    3 G" O: H: V( ^" f9 j( Y0 G
  3. var location="";6 j' H5 `  C2 \$ A( }
  4. var navigate="";
    ) V# g) f0 c! o( A$ B/ X# Q  Y
  5. frames[0].location.href="";
    - A, F* I: X) u7 g% g
  6. </script>
复制代码
+ I, O" I) f) J) y, T
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码
  i# G$ m0 Q6 p& c# m+ c

9 D$ G4 l6 {+ a! B; }
  1. <script type="text/javascript" charset="utf-8">" T% F: _- z- _% h7 [
  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 T1 w# d0 H  ~# @
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。6 i8 |3 D- N' u! ^
Meta标签方法9 O2 x2 m0 R4 g( N: q* D) A* [
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法
) T0 W/ o& b$ k5 S; Q
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法
: ~/ b7 y7 c4 O  ]+ M) z
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法
! B: O# n3 U! ~: l$ s; q
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码
; h6 K/ g, z3 x( o, T
.htaccess方法
+ @  W8 }( |% l; m" a9 _在网站根目录下的.htaccess文件中中加一句0 O# _! ~; C7 D
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码
( i4 \2 B3 i! }  Z) Z& G2 t
IIS方法
. B  E& y4 y- T9 p; j( G在web.config文件中加
  1. <system.webServer>( K0 M+ X# I, w; o
  2.   ...
    ; q& t- k% ?/ l3 ]
  3.   <httpProtocol>. C2 R+ W9 Y/ i
  4.     <customHeaders>8 @( |" n9 a& Z
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      0 y# ]* b! Y2 I$ K+ v3 H: g
  6.     </customHeaders>    7 I4 a. n& X  D5 K  l3 Z2 X
  7.   </httpProtocol>  3 u2 E2 W) I- e# J' S
  8.   ...- P, H+ O8 \' e/ [& `  y: M8 P
  9. </system.webServer>
复制代码
+ c9 K, n( [- _5 B: C
之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。% i. n* `& A' O$ _( N
9 r0 |# F( P0 w) J0 Y
3、推荐解决方法。- K9 u7 U3 g. G5 T* M' ?; L% h- [1 F
  1. <script language="javascript">  
    ( o5 F' E6 D7 M6 a, e8 m
  2. if(top != self){* X) u8 {/ k0 d' A+ r  S* U  F: D
  3.     location.href = "http://xp6.org/iframe.html";  . N; Y3 s4 Y5 J! j/ L8 e- ~
  4.     top.location.href=self.location.href;
    2 Y. i# L1 D* U7 Y
  5. }  
    + N# n% s+ t% G% u
  6. </script>
复制代码
* W9 O- e0 k; r8 V4 R4 N
将上面的代码复制到需要屏蔽页面<head>里面加载。5 ?0 z+ B- Q3 h
制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。
  \* p& Z% w% ~* n, P3 |' a原理:
  M1 B% g" M% \9 T7 q9 J. o2 k第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。
) c9 T1 Z5 g) ~第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。
7 D2 d' u2 G3 ?目前测试这种方法没什么问题。) ^; I: ~- z6 Q- T

& w8 o1 k- R& ~2 L. t5 a
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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