搜索
查看: 791|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。* T# `9 z; r  j$ w! R  G
这次讲一下如何防止自己的网页被别人iframe。
  F1 y/ g/ W+ K1 W! R: s
2 i4 R/ ?* N  A6 T. k( @1、这些方法都可行,但不是太可靠。
6 _' z, q. M$ e6 V: ]4 L% M
  1. <script language="javascript">
    0 i9 c- E2 `" d5 d+ u) a
  2. if( top.location != self.location) top.location.href=self.location.href;
    6 I& Z) J. R; o0 g( ^
  3. </script>
复制代码

( u% d6 u& R+ F2 f( h' Q
  1. <script language="javascript">( q0 Z- Z9 w. x+ u6 Y: B5 s4 v" v: R
  2. if (top.location != location) top.location.href = location.href;
    " y1 @6 y/ U$ B6 V) ^$ r  h3 K( q  O
  3. </script>
复制代码
) L) ^$ _+ o  r0 Y
  1. <script language="javascript">; y7 n8 m7 D9 z1 s
  2. if (top.location != self.location) {top.location=self.location;}4 W$ B8 n3 ]4 H8 u: l( Q% m  m1 c! d4 c
  3. </script>
复制代码
' s7 R0 l* v5 L
  1. <script language="javascript">
    " t; p% o/ `$ H' d9 \6 J
  2. if (top.frames.length!=0) top.location=self.document.location;5 D; P+ O4 _/ F: c+ D, I$ f* G& m
  3. </script>
复制代码
不可靠的原因:% A& T  t7 L5 E2 P# S% |
当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。+ q( i" ]  P& r2 W( ~
  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>
    $ Y, O4 P8 R# ~  o  C
  2. <script language="javascript"> 7 a: y7 K- i, D% Y" S4 S1 w
  3. var location="";
      p7 b" F* E4 X0 N1 [
  4. var navigate="";
    1 ]1 r# _  \, g
  5. frames[0].location.href="";0 w# N/ j+ w& R# g2 c( @$ r' b/ S
  6. </script>
复制代码
" M8 s& G; X0 N$ s4 M9 M
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码

+ N; p6 j" h  k! ^! ?
6 f2 @8 H$ x% b7 ~- x+ l
  1. <script type="text/javascript" charset="utf-8">
    6 O4 @1 P, A) P3 F
  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>');3 _5 `2 T" \3 Y9 |" b3 D% `, o9 o
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。
! z  Q# e, O: G+ p$ YMeta标签方法
- W" z5 D" f( q- q5 }3 u
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法
% F) V* }) f9 a/ T1 |- S9 t3 R! S
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法
+ i4 x% O* R7 c" @4 O
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法9 q% d5 z: }  r. [9 w  H
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码

2 ?  l: M3 u6 z1 x.htaccess方法( q, C/ `& R* \8 e# W% J
在网站根目录下的.htaccess文件中中加一句
* H1 k- m, d4 d) U; R
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码

( z9 S, f: Q* c( h. ]' I8 k( LIIS方法3 \  }" b3 u4 f& _" N" w& B
在web.config文件中加
  1. <system.webServer>
    ; D6 _  h8 }# Z" B- h
  2.   ...
    " I4 ~. j! V2 i  ?4 L
  3.   <httpProtocol>
    ) k8 Y" T7 `) `* i
  4.     <customHeaders>" P" V- }* U7 }
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      
    + F+ G+ K0 |4 m
  6.     </customHeaders>    9 W5 S+ G6 r& U$ C% j
  7.   </httpProtocol>  $ D- y; }% R( q6 a$ O" |
  8.   ..." p$ \" C) D' c0 K/ b5 n
  9. </system.webServer>
复制代码
8 |: f1 Q( ~! P
之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。
7 i; w) D4 u, ]8 l2 H( {7 Q, b1 K8 x
3、推荐解决方法。5 @4 s( g- S' T3 F
  1. <script language="javascript">  4 w# \# u2 b( @( E1 `) G, V
  2. if(top != self){5 I1 C; K9 d- _1 \0 I
  3.     location.href = "http://xp6.org/iframe.html";  
    1 B: h5 l: l6 w( X
  4.     top.location.href=self.location.href;8 d1 ?1 }: O# L% `* q' R
  5. }  
    ) ?0 A3 K) K$ ~( G3 \: ], e9 W" l2 h
  6. </script>
复制代码

, u/ M$ e: Z+ O$ a  }! ~1 S将上面的代码复制到需要屏蔽页面<head>里面加载。5 u( P2 v( a; X2 K3 P5 E
制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。# B5 N( X  k) V( H# `
原理:
3 Z5 t: U% }6 g" O7 e) ~4 D第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。( m( U1 U/ c" L/ c) R7 q
第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。
7 O: U6 w: I2 s; g( m7 N目前测试这种方法没什么问题。
! N( B; P) z, W" k0 f
) i4 Z" o  Z- U/ j3 q
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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