搜索
查看: 6551|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。
! f4 C3 j. y4 s9 v3 |( _9 o这次讲一下如何防止自己的网页被别人iframe。9 h1 u' Z8 U( q+ R4 ?

0 u3 R! N# ~6 N% E' g3 h, ?6 Y. h+ N1、这些方法都可行,但不是太可靠。
7 z1 b- O$ J6 K: a
  1. <script language="javascript">
      ]! T- E; x# u+ o; L$ o' p
  2. if( top.location != self.location) top.location.href=self.location.href;
    6 _) @3 a$ j# h9 H. |
  3. </script>
复制代码

: f2 A2 \: o, w5 H/ O
  1. <script language="javascript">% V3 M& n5 v( ~- m3 m0 b
  2. if (top.location != location) top.location.href = location.href;2 @7 p5 K2 \8 u2 Q. V* r
  3. </script>
复制代码

5 E% L, U" e) U9 @) c) H+ S
  1. <script language="javascript"># _3 F, ]1 {. T
  2. if (top.location != self.location) {top.location=self.location;}
      v' W( o, D- q$ `3 L3 _& `5 v
  3. </script>
复制代码
4 {* @3 F( H2 k  [+ [3 ~) f4 h
  1. <script language="javascript">
    + W) M3 z: c3 V+ `2 j
  2. if (top.frames.length!=0) top.location=self.document.location;# q- o) F7 S( D2 T: j5 }# ^
  3. </script>
复制代码
不可靠的原因:8 L$ m, S' j: ^; s
当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。
1 H+ C6 S$ M' n' D% ]
  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>" b: X$ K; @7 N& m! O* D1 I
  2. <script language="javascript">
    * \& l" C& N0 F( s) U9 ]& O
  3. var location="";
    ( M, j2 Y  Y; t0 I
  4. var navigate="";
    $ h) T* o% ?% M! l4 k) ?  q
  5. frames[0].location.href="";
    # C2 S( r" _( d3 j
  6. </script>
复制代码

4 N3 R8 z) R- A: C" p
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码

: X; X- z8 F+ v' q* d% q
! y" w5 {7 v( r
  1. <script type="text/javascript" charset="utf-8">* U# k. d* v1 D( Z# a: 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>');: c2 ^! f5 d, U( k4 `4 Z* n- b
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。
7 L5 W; M4 p) m$ AMeta标签方法4 ]) W6 \8 X! l! X( b* a# w; D$ J+ }
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法
5 ^3 t- H, L$ ^  @" x& |# u
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法
& ?# _( T  ?0 e3 x
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法. e4 f: B  o, ]1 K; S
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码
# D/ Y. F. q8 k/ d! m' u) w4 R; z
.htaccess方法
9 q4 v4 R# k5 E: M, z( Z  J在网站根目录下的.htaccess文件中中加一句! G9 z6 {9 |6 f+ P- Y6 e$ ?5 d  S
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码
, M) k9 i7 q; {
IIS方法
: f6 I2 O3 |$ _# {8 T& [- Q5 p3 M  X在web.config文件中加
  1. <system.webServer>
    " T3 c( X$ o7 m$ q: h* s5 }! p
  2.   ...9 C9 m, ^* ^5 I) N
  3.   <httpProtocol>4 {  Q. U% z  e; f
  4.     <customHeaders># D, G9 G, y6 g# f: C. W* I3 N; F1 \
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      ; T! G5 U% L* h: _  c0 ?
  6.     </customHeaders>   
    5 W" N, O8 |* Q& s  e# B  B; l
  7.   </httpProtocol>  
    & A  H3 T% v5 d- L+ Y! V- a( L
  8.   ...8 P6 `# k6 J% Y  C; l7 U# ~
  9. </system.webServer>
复制代码

) i2 y5 w0 |" `! J! x9 @! z5 M( b之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。0 ^% g1 F" G) n" d, ?: `* W0 r
8 x5 y/ h5 d! g  g  r, D
3、推荐解决方法。
) M% S8 l) ^6 m9 d& j: H! a4 e
  1. <script language="javascript">  & e" A' I% j2 W5 d) r, L
  2. if(top != self){1 m- t! F; f$ F5 {
  3.     location.href = "http://xp6.org/iframe.html";  ) ^2 ^' x. u( d( t% M/ f( A7 a
  4.     top.location.href=self.location.href;
    + C: @8 c! |& z7 ]. T* u/ C
  5. }  
    : R8 R7 ~2 W( W1 O6 y
  6. </script>
复制代码

% L5 p9 @% c5 x7 N- \6 K7 k将上面的代码复制到需要屏蔽页面<head>里面加载。% z( l/ M: U  `2 T7 j& o+ j
制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。
. q) o* p5 H8 y# U5 L: H原理:/ b; B' u: ]. |0 m6 \5 W  L
第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。
6 e5 ?6 [! B8 O" y7 y( f  P# l第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。
+ B$ m# l# p* f$ W, H" a; g目前测试这种方法没什么问题。
& ~% K& ]! I( C* S% u, M* p7 J) F3 j7 ~% }, w
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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