搜索
查看: 14446|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。
1 ?1 J; C+ s2 v. C1 V/ ?+ D, x6 r这次讲一下如何防止自己的网页被别人iframe。
% A7 N4 n5 m* y3 n/ z+ m3 C' T, A* n4 A
1、这些方法都可行,但不是太可靠。
5 _- a, x$ s7 }6 f4 ]% z
  1. <script language="javascript">" A, j3 ^- R& ?+ k- R6 D
  2. if( top.location != self.location) top.location.href=self.location.href;! C* q! T- v4 b: r& P
  3. </script>
复制代码

5 y8 i( u* M, n- @; R
  1. <script language="javascript"># D3 O  b# `1 o  f1 D  R* I# m
  2. if (top.location != location) top.location.href = location.href;
    4 c) T; q7 I  V8 f( P% t
  3. </script>
复制代码

* J% |1 z" C/ e+ X2 _% ?
  1. <script language="javascript">
    + y/ Y' S6 Q' A5 p- a6 [
  2. if (top.location != self.location) {top.location=self.location;}5 w; Y0 A7 E8 ?( S+ p& H
  3. </script>
复制代码

4 d5 Y$ r2 y# x- v( w
  1. <script language="javascript">0 F3 z7 d/ _# d2 |  _' v
  2. if (top.frames.length!=0) top.location=self.document.location;
    $ l  b7 f2 O- z
  3. </script>
复制代码
不可靠的原因:
& ^$ E- Y  ]: U8 Z当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。4 W5 z3 W6 k& v4 Z$ T+ ]
  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>
      ?* ^0 }: x' J" z$ d3 |" w
  2. <script language="javascript"> ) O1 @5 K8 k! {# w2 J( Q
  3. var location="";, ?6 ]+ N$ P* q3 A# M5 d# f( r* q
  4. var navigate="";( K( w% ~$ A9 D% c! C% X
  5. frames[0].location.href="";
    ! j- L" n3 ~( y; D% h) s0 k
  6. </script>
复制代码

' F9 R8 s7 [5 H" A1 z
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码

! ?5 y* }- S! ?
4 U, Q( c. _0 M( f( o' U$ A! q
  1. <script type="text/javascript" charset="utf-8">  T! z! n+ D4 `+ P
  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 P; u( `8 S5 ^. ^! M
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。" M0 R( d: I# |, G# m0 Y* N) E
Meta标签方法8 z5 p7 M2 X; W/ e2 c* ?
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法
" F, w  i+ Q& N' @: g
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法
: R8 `& N( b* h# f6 L
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法
% g- D+ S" w( r% V
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码

; ]- D, G, T9 @# E, o! R6 ]" T" }.htaccess方法
8 p) m: p  A: O& v" q- K$ d6 o在网站根目录下的.htaccess文件中中加一句
" c' `( L6 B2 J. I& [
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码
& U5 s4 z& g4 @
IIS方法( s! E8 G* {% [5 @* n0 Z) M3 N
在web.config文件中加
  1. <system.webServer>
    $ P% D4 t6 V- p" L- h" d. p" ^! A
  2.   ..., B: v! D' N# M6 P& p
  3.   <httpProtocol>
    & x0 H. X& w' Q# v! f% I
  4.     <customHeaders>
    . ~- }. ^) d* @: @
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      
    - \( \- f3 L3 t' S1 d1 Q2 U  `& J
  6.     </customHeaders>    + a4 B* q7 p+ u6 m0 m, V
  7.   </httpProtocol>  
    ) t7 L$ {7 F! W. h
  8.   ...
    8 e0 \9 Z8 ?" F- p$ w# i: w
  9. </system.webServer>
复制代码

* g" x, m7 P+ C! b之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。
  B" A6 l* D: g0 S; u2 J9 }% M
+ f" A2 K" n* t3 I  t2 [3、推荐解决方法。
" A/ o) [1 \; W% r& t8 Y' r. B
  1. <script language="javascript">  
    3 l, G- ?" E* ]# @& p
  2. if(top != self){
    2 R0 \# o: T" M, S$ v% }4 ?
  3.     location.href = "http://xp6.org/iframe.html";  
    5 o3 D3 g+ M- T5 R- m
  4.     top.location.href=self.location.href;
    . z$ A, e$ N' P' d' E
  5. }  ' O* u0 Y4 o3 E4 w+ Y
  6. </script>
复制代码
( a% l' W2 a( l# |9 |/ l
将上面的代码复制到需要屏蔽页面<head>里面加载。" }5 Z& A5 ^1 D# i7 c& N" u
制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。
  H0 b) e$ m# D' L% c' r原理:$ x, t. Z* x4 j; o0 t) ]. N$ F
第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。! \& n3 D9 q, ~+ A
第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。
  x9 ?, E  t8 P* m! Q4 W目前测试这种方法没什么问题。+ a$ v/ b. v' ^( s# q- B5 ]' |5 p1 Z
, E- Z5 e  {! R( Y4 M' e  c
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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