搜索
查看: 14678|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。) G1 c8 p7 k. I5 Q* t( u. g6 W
这次讲一下如何防止自己的网页被别人iframe。7 b5 l+ R8 H& |7 m4 {) ]
6 Z' N# J8 c; P5 G/ o- c
1、这些方法都可行,但不是太可靠。: H3 k5 c# L+ h& J, \
  1. <script language="javascript">) f  K6 G6 v( Z, ^
  2. if( top.location != self.location) top.location.href=self.location.href;
    % x3 Y9 z) C0 j* }
  3. </script>
复制代码
3 Q" R$ H% a3 K, b$ e* N
  1. <script language="javascript">$ k+ I3 y! t" q$ \
  2. if (top.location != location) top.location.href = location.href;) B9 ]7 }2 v& v6 N! x
  3. </script>
复制代码

- k5 z% M. ?3 w& o5 d
  1. <script language="javascript">& y6 V' b9 R$ R
  2. if (top.location != self.location) {top.location=self.location;}
    7 \/ L/ z, f" T& ~+ v
  3. </script>
复制代码
8 g8 w0 P* B& k  w# Z5 v  P5 f
  1. <script language="javascript">+ P; [) h& i) L) V6 ^6 p
  2. if (top.frames.length!=0) top.location=self.document.location;
    ) J! E8 |! Z6 F7 A
  3. </script>
复制代码
不可靠的原因:& H7 H3 B. k3 v2 v5 D7 h
当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。: O3 I( c0 C2 q, V% Q: j9 h
  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>
    ) c* [8 U0 Q, _% X2 }. F' ]7 q/ ]
  2. <script language="javascript"> $ v6 R! X7 z  ]* N+ e
  3. var location="";
    , _; I) d  y: X" m/ J! O. R- a
  4. var navigate="";
    # J' L5 x5 E- F9 B8 l4 ?$ t; E
  5. frames[0].location.href="";4 f: J4 H1 H( A6 z+ n2 Q
  6. </script>
复制代码
- G; _7 [- g5 K
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码
) G$ Y4 D  _1 r; u" k" `

9 p) E" @. I+ F2 k$ E) a
  1. <script type="text/javascript" charset="utf-8">" K3 x! ~2 c; Y1 |. ], l5 a
  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 C" q8 Q8 R2 X
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。% o0 E. T' Q3 E! Z8 `8 g: ?
Meta标签方法1 k+ s4 q, q4 R+ S5 b
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法) o) w. F- z) G6 e+ {* o8 C
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法6 r2 b5 Y* p- l  g" z. v
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法
( h* Q8 `: f! Q' N; ?
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码

- G- V5 B) ^4 U+ w5 P4 a.htaccess方法( @/ J; j" M$ e6 G, i
在网站根目录下的.htaccess文件中中加一句# T, p. l" j: x' ~+ i
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码
! a' M- n$ g3 ]. ~
IIS方法0 R6 M1 @6 e8 z5 k' q
在web.config文件中加
  1. <system.webServer>/ R: D2 f1 k+ m" H$ `
  2.   ...0 q1 J0 `6 \1 N  T% w
  3.   <httpProtocol>
    & U5 u  E& E: q7 Q+ J( i/ f
  4.     <customHeaders>
    ( s% q& Z) \* ~) \+ v5 c+ l
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      
    # b* I$ F. [6 n* \: Z
  6.     </customHeaders>    9 S! a3 I9 N( I% W
  7.   </httpProtocol>  
    " ^4 q; w. U4 `" j0 F* ]+ v+ F
  8.   ...
    ; j7 ~1 B1 }7 W5 `* Z1 I8 V
  9. </system.webServer>
复制代码

, w% n" P  U: S6 z5 a  q* M! F之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。
% w; a5 w, p+ y0 H8 G& D/ \3 n, R$ V5 V; ?1 f$ u* d
3、推荐解决方法。! T4 l( x4 _$ ^7 s6 f! D  i2 v. p" U
  1. <script language="javascript">  
    / f' k( v# ^! [) |  O  P' |9 b
  2. if(top != self){1 @7 x7 S/ r. x3 b6 H( \6 y
  3.     location.href = "http://xp6.org/iframe.html";  8 ?' ~5 K. {9 p" m
  4.     top.location.href=self.location.href;- i" c# Y0 v3 w" F/ c
  5. }  . |+ v' M, o. C
  6. </script>
复制代码
* M" p+ B  _9 p- m
将上面的代码复制到需要屏蔽页面<head>里面加载。  N( ?9 c' h! u1 w/ ~$ s6 ~7 y6 j5 Z6 x, t
制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。
' c# o. [; _1 R0 w" M$ E原理:- R3 ^  R: q* [. v
第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。
* l4 Z1 Q4 f5 S1 f3 |' [第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。+ I5 n! I4 O$ Q4 o  s& [9 M
目前测试这种方法没什么问题。4 D. |" b7 ^# e3 p/ M0 Q
8 z- A* e3 I( c7 v
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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