搜索
查看: 14410|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。: }1 Z' F0 l1 d- @, E! K) J) F
这次讲一下如何防止自己的网页被别人iframe。" P/ k6 v' [0 o: {' s. B

# q! z4 F  y& ~1、这些方法都可行,但不是太可靠。5 o" V# t& `) G$ l1 B- |" ^& {
  1. <script language="javascript">, ?8 `+ }* a1 \1 c$ R
  2. if( top.location != self.location) top.location.href=self.location.href;1 @+ S- h# J$ U
  3. </script>
复制代码

# H( U# P/ |) f+ c, d8 Z1 v- c7 [
  1. <script language="javascript">+ W; ]* l% y/ n3 s. u7 w1 X
  2. if (top.location != location) top.location.href = location.href;# a% s1 v# t9 r/ }/ D% J( o. x
  3. </script>
复制代码
  S. d% \2 E' o7 l, W/ s2 J: s
  1. <script language="javascript">6 H- P4 M- {) a
  2. if (top.location != self.location) {top.location=self.location;}
    / X% R% @! E* u
  3. </script>
复制代码

. t9 v; b- l8 s7 |; d# s' k% [% b; g2 w
  1. <script language="javascript">
    # [5 `3 n" J# e4 [7 J
  2. if (top.frames.length!=0) top.location=self.document.location;4 A3 [) k( X0 F2 d1 @$ D8 {
  3. </script>
复制代码
不可靠的原因:. J+ `" F- X7 H4 C7 r4 s2 v
当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。; n  H9 v# M+ Q$ A
  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 A. b% ?# V' h+ T
  2. <script language="javascript"> 4 d3 `0 h! A) i# f1 O* j+ H
  3. var location="";$ z$ }9 m9 o1 S8 U! K  J, Y
  4. var navigate="";4 c0 G$ {2 o2 U+ R
  5. frames[0].location.href="";+ ~% a" u& u" z8 Z6 M; E1 m
  6. </script>
复制代码
: L( D( p; f; i! [# s5 t+ O
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码
8 y# S* L" e3 e( @! I9 a5 L
" W/ T: l5 h9 E
  1. <script type="text/javascript" charset="utf-8">
    ; [- W' f9 V- X7 A, q0 h0 Y
  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>');
    ) ^$ U$ n7 b) ?* B5 W1 Y/ {7 Z
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。
* o( i6 S" l1 E  `4 qMeta标签方法
: Z) [/ t# z* W2 ~$ Y) K2 D4 R0 x
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法; M+ C* j2 m+ c; g! I* Y# n9 }
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法
7 Y5 M$ ?/ G, w$ y: `' J0 i3 _8 {% o
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法
3 a5 H5 U, x: K5 X
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码
' Z- N* V. ~( g( V! e2 w- b
.htaccess方法0 X$ K! T1 I. c4 c1 ~: V
在网站根目录下的.htaccess文件中中加一句: T4 A7 ^* W, P( L
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码

" v, s& t$ Q- ]. \: {$ _IIS方法
/ p1 D* e0 m8 K在web.config文件中加
  1. <system.webServer>' I' u! x7 e+ _( G  f1 U& K
  2.   ...
    + m, n) i4 I% c: @" q
  3.   <httpProtocol>. `+ G' Z1 t/ K  U8 ]0 h) x* M
  4.     <customHeaders>* U+ K) S5 J/ _% |) f
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      
    7 A3 y) a0 U: s+ B. t( N
  6.     </customHeaders>    ' @6 C3 E9 g3 G, `
  7.   </httpProtocol>  . P, _/ ?; A2 \# n
  8.   ...
    % v5 Q2 I3 {) @& y& V
  9. </system.webServer>
复制代码
' F/ P- G4 y% B2 h' g  ]8 A
之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。
4 p3 c9 ~7 Z! J3 T7 b2 c2 H: }4 _
, j1 D3 S9 Y" D3、推荐解决方法。
- ]  }' T3 i" v! W2 r
  1. <script language="javascript">  8 b* v7 [8 u  \3 t4 G6 O# h
  2. if(top != self){
    . w0 s5 D; y# I, w  ^% E
  3.     location.href = "http://xp6.org/iframe.html";  
    / `6 Q# e* F9 I) J: e$ N- t
  4.     top.location.href=self.location.href;  _' u: F( A1 W) R5 w
  5. }  2 n. P5 A5 O. A; N9 |& V! G# \# E' z
  6. </script>
复制代码

! t- e0 T9 h' \- |5 H3 `将上面的代码复制到需要屏蔽页面<head>里面加载。; ^% {  g) s: t$ d. G1 }
制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。
+ I3 N% x  r. l1 z* S+ g原理:
  `2 N5 ]. \1 X! j第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。, x3 u% [* b5 k5 }5 V, L
第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。3 a3 U% D5 y6 l1 t; [! x5 P: P% V
目前测试这种方法没什么问题。$ W$ w4 c, H2 T! e) M

0 J" H+ `( I  Y* \% q
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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