搜索
查看: 14490|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。
% K& l' x- i6 L3 b' w6 `. g  E/ \这次讲一下如何防止自己的网页被别人iframe。1 h, `: |/ `1 q3 T  W

3 l' n/ m% v3 w. i# M  B1、这些方法都可行,但不是太可靠。
1 @3 e5 C( y3 _; H0 `
  1. <script language="javascript">/ B6 h) Y3 F2 z# \4 f
  2. if( top.location != self.location) top.location.href=self.location.href;$ v) x7 d  ~  l, T- f, H2 L
  3. </script>
复制代码
: F! l8 N2 e* z: F! g/ j! f& W
  1. <script language="javascript">. t, B/ i- a0 y, z$ G
  2. if (top.location != location) top.location.href = location.href;* L* j1 |. _, c! \
  3. </script>
复制代码

2 j' y5 T2 x5 |
  1. <script language="javascript">7 Z2 d" L0 U  _$ s3 b% [& T) m1 q
  2. if (top.location != self.location) {top.location=self.location;}
    . o) y! {) ]( f! c+ z; u' y
  3. </script>
复制代码
  o% G3 j0 J+ D! a2 f$ N) [. v3 A% A# g
  1. <script language="javascript">
    + E! c( ]4 m$ Z: ?) ^' H  j1 _* h
  2. if (top.frames.length!=0) top.location=self.document.location;
    1 p& S  W3 v+ E2 ~) k) u
  3. </script>
复制代码
不可靠的原因:
" z8 O* a3 f8 u当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。
$ N% u3 o  h, v
  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>
    4 X: q6 X  D  f. v
  2. <script language="javascript"> " g# u+ M: q6 h* |3 N; b, ?
  3. var location="";
    % g' w( Q8 G2 \! K5 Z2 \
  4. var navigate="";
    2 n* _% |5 w. H, O3 J4 J+ Q7 F5 {
  5. frames[0].location.href="";
    : q; B$ \, Q4 \/ x' E4 l
  6. </script>
复制代码
4 e" J! O. [: G
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码
9 i% b3 H% Y! V$ f: p2 I/ K

- m- d! v* m9 w+ d/ h
  1. <script type="text/javascript" charset="utf-8">
    ! J4 N0 u; ^+ [% q
  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>');
    1 R( J/ X% }) [* g5 s: p4 M
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。
$ X9 U  }! k8 UMeta标签方法2 F: I4 M8 z8 }+ V9 k; ?- m
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法
- y! ~( m& V( ^! `$ ]7 C) }9 L7 B
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法) V8 W2 E8 l/ s
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法9 L. w6 Q6 n8 M
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码

9 t, g- ?! s5 K.htaccess方法
- {' |/ ]! m2 O  x0 A在网站根目录下的.htaccess文件中中加一句
' w) U5 ^! r- ?. n. e) B* z2 B
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码
( @- Z+ \! X! v
IIS方法9 q9 N: t$ ^+ G" r/ e3 V& p4 o
在web.config文件中加
  1. <system.webServer>! q0 s1 {  c5 j. D, J/ v  u! o. l' `
  2.   ...1 [- z: P+ a' R3 |& X* \4 v
  3.   <httpProtocol>6 p  q; R: K+ F* p# m5 p
  4.     <customHeaders>7 t" ^5 |# Z. q/ e7 h+ E
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      
    4 e0 w! F' @( ~! t
  6.     </customHeaders>   
    ' R) j% e$ i9 B- j: F2 \7 Q
  7.   </httpProtocol>  / {$ M0 w, f+ Z" j% n% V+ d2 t
  8.   ...
    & Z9 x( F; ^$ v: [& i
  9. </system.webServer>
复制代码

. b1 T( N3 N# r& Z% C之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。9 H. w' T; ?7 T
4 y2 J8 B* U- a5 O/ c9 S  C$ z5 D# K5 J
3、推荐解决方法。
. `! z% a% W! @5 r: s1 a
  1. <script language="javascript">  
    # F  e' r; O4 C4 T
  2. if(top != self){
    $ V' K8 I" f* B* v$ j8 X" D( [  V
  3.     location.href = "http://xp6.org/iframe.html";  
    7 _3 x+ D' D+ w- c# P" [' ?' Q
  4.     top.location.href=self.location.href;
    # j% Z: U" `" a' R2 ~; F
  5. }  
    8 ^) u0 Z- Q+ l  R: _4 C/ R' p1 f/ q
  6. </script>
复制代码
2 ?* P3 H6 q3 @2 e! J1 E% x. T0 ^
将上面的代码复制到需要屏蔽页面<head>里面加载。9 C3 Z# }5 k) X0 ]+ m( B7 a8 _
制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。  `$ S8 `* r+ _/ g, N$ {. R' O
原理:
* G( c4 e; d1 k3 j0 n* s) T第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。( P) `0 d  P  o- i! u+ f, s
第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。2 `" T6 T4 u& Z6 s
目前测试这种方法没什么问题。
+ ?$ u4 w# M' m+ U! x! z' M" G( |' s: ]6 i
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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