搜索
查看: 14654|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。
* f3 d8 e0 @/ V# G/ F' q这次讲一下如何防止自己的网页被别人iframe。
' K9 r8 `1 H5 _9 d; H
) i( J' k9 r; d4 p, j1、这些方法都可行,但不是太可靠。' r6 X7 i. ?$ I' J
  1. <script language="javascript">9 v; K! b1 W- ^- [; @
  2. if( top.location != self.location) top.location.href=self.location.href;& N  }7 f+ E  |' M
  3. </script>
复制代码
) J) k+ H! G* S1 I! w. V  G2 T# }
  1. <script language="javascript">
    * o% q1 x$ ]: R; |& f
  2. if (top.location != location) top.location.href = location.href;$ t0 V# ], E# V
  3. </script>
复制代码

: v( P0 H. r$ U: u; t
  1. <script language="javascript">8 R3 g* S4 I) P/ C
  2. if (top.location != self.location) {top.location=self.location;}
    * }7 X9 j5 O. V# ]. j1 D) @
  3. </script>
复制代码

$ x2 r8 n: O; \. H4 E# |0 P+ U
  1. <script language="javascript">
    5 Z- O: D' y% a9 L7 @
  2. if (top.frames.length!=0) top.location=self.document.location;
    ; i( r9 ^2 w0 w# A
  3. </script>
复制代码
不可靠的原因:
% M! o/ B9 D) C+ c8 k! n) W当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。( A: n: }6 R* o1 ]) F5 Z
  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>
    # n( r. z: j2 P
  2. <script language="javascript">   p" q, @* C6 P% W2 Q1 u7 ]
  3. var location="";) H' x7 z7 O$ x7 N( z5 Q
  4. var navigate="";
    $ J% B' @! J) t5 s  b
  5. frames[0].location.href="";
    ) q$ {  A# Z8 B7 d4 d# D$ j1 R
  6. </script>
复制代码

' l9 k% B' N3 p/ q
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码

1 P* r, Q# d" c! S6 `( B6 \3 U0 _7 N7 E6 I; s- o% f2 y, ]; {
  1. <script type="text/javascript" charset="utf-8">
    & x' @1 o! y! c# @& A* 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>');
    ; Y4 R; P9 |! ~' @4 e; J
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。
  F0 u5 @' j. f+ l! \Meta标签方法
# U9 J6 d: {8 d
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法
7 ^  X+ k( x& o- a
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法7 N+ e' P" w7 [. a
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法
6 @; \/ J8 J# v5 T' `+ O
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码
7 V5 ^9 K# |5 r* e( P' t
.htaccess方法9 p& O8 T5 C# V
在网站根目录下的.htaccess文件中中加一句
8 y- N* C) g* Q
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码

+ E2 l0 Q" I* g9 x+ x  |- ]IIS方法8 q6 _8 N& F2 ?2 G" W' m& F4 ?4 W# S( E
在web.config文件中加
  1. <system.webServer>
    ' x) d* F: H% U1 F1 |
  2.   ...
    1 j7 O6 ?+ C* R9 C
  3.   <httpProtocol>
    % h) r% \4 x0 y6 J
  4.     <customHeaders>- o5 G* }" T. c& e. i8 B: G9 D. U/ w, m
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      0 g& M9 m/ u- K
  6.     </customHeaders>   
    # m- `! A6 A: J0 C$ B/ c: u/ u
  7.   </httpProtocol>  / x: w' r1 O" k5 |  i, L
  8.   ...
    1 _0 g3 d0 g: {
  9. </system.webServer>
复制代码

! d: X  W3 S/ [# E- x! B之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。9 B, i5 w, o8 F" |2 J# l5 F

. `" ^7 ?+ q" c: m5 _+ K* a3、推荐解决方法。4 b2 T( }9 x% l1 i
  1. <script language="javascript">  
    $ a* s9 \' @$ R2 D$ {' G2 V
  2. if(top != self){) l: N+ b- h. r" k4 U/ Z
  3.     location.href = "http://xp6.org/iframe.html";  
    , e  K2 r5 |7 G% b, I$ x. ^4 y. z
  4.     top.location.href=self.location.href;
    " g* p' H; a" Y: S8 d* m' K8 n9 k0 \! B
  5. }  
    : m  a# |; X2 |& F3 `9 h5 ?+ E
  6. </script>
复制代码
; h8 K2 o& `/ Y3 D0 m6 R" P. R
将上面的代码复制到需要屏蔽页面<head>里面加载。
+ a5 _/ R# c4 Z( e9 z制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。/ E" Q$ \2 H2 h. t* _
原理:
* g/ V3 O! J( a0 _4 y第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。
# B# D( b1 d4 ^/ [% U" {9 i/ W第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。
' Z( k: ^5 E8 ]目前测试这种方法没什么问题。
( K/ B* v0 W8 m( j( N" A- {8 ^
, c0 F7 G: A, L8 ~3 l
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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