搜索
查看: 14692|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。. V8 z* s' e- f9 O' W0 s% U/ C$ i% \
这次讲一下如何防止自己的网页被别人iframe。
' t6 k4 y5 ]4 S" Q2 C# q
7 x$ w& x% @0 i& ], h1、这些方法都可行,但不是太可靠。* {6 Y" A  W( G- k5 |5 a9 r* N0 b
  1. <script language="javascript">
    ! P, _5 e2 w5 [4 R, M; P4 A
  2. if( top.location != self.location) top.location.href=self.location.href;
    ! X. V+ e* N" m2 w0 z
  3. </script>
复制代码
* e, n, [1 s; W' ]: H" M
  1. <script language="javascript">
    8 n$ x6 J+ ~6 T6 q  X
  2. if (top.location != location) top.location.href = location.href;5 U( H) t$ E/ S4 Y2 t
  3. </script>
复制代码
5 x! d- u% E) J% K
  1. <script language="javascript">
    ! n+ n: ?( q8 Z/ X/ Q: Y6 c
  2. if (top.location != self.location) {top.location=self.location;}& `& O; H; k' u6 }+ ~. p- q6 d2 o
  3. </script>
复制代码
3 d2 n% V$ H, {% G1 r
  1. <script language="javascript">7 Z, V( E; ^4 k0 z; V8 w
  2. if (top.frames.length!=0) top.location=self.document.location;! V0 B/ B/ ~& s  B) C/ K
  3. </script>
复制代码
不可靠的原因:
$ w' o& u" q' h; |: L当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。
: N8 H( K: A4 S
  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>+ v" \/ I6 f0 M. i2 ~
  2. <script language="javascript">
    5 Y3 K, L+ L! u$ s6 w
  3. var location="";
    8 \( c% Q8 d- p6 G! ^
  4. var navigate="";
    + r8 M* i9 m0 X/ I/ L- v
  5. frames[0].location.href="";# x3 \/ Q+ X+ B3 t
  6. </script>
复制代码

# d# o  n9 z8 s1 B/ N. L0 j
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码
0 r5 K7 y; m9 ^/ l, s

, v/ e+ u* U! A' t$ f1 M1 a
  1. <script type="text/javascript" charset="utf-8">- U+ }7 Y4 Z: \) ^5 e% M
  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>');8 j4 m+ m" L7 r* u8 `( Q
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。; l8 V& l8 o( ]( l; y: ]
Meta标签方法
8 U3 ^& b7 O8 ]6 S+ b# k
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法1 S5 P2 p) q6 W$ j' P( v+ J" }) l" J
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法) F9 h2 e( E0 p3 e+ l0 s
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法
3 o7 {- O9 G+ T5 e- s4 B- S
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码
9 o1 h' W5 }9 w% v/ m
.htaccess方法
( D- M$ w! `5 m/ Y在网站根目录下的.htaccess文件中中加一句
: I7 U4 y: v5 r. H+ ?3 s
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码
$ M/ q, V0 @( L& J
IIS方法
6 h! h8 _0 k& V; x在web.config文件中加
  1. <system.webServer>
    % I* Z; ^* @( o9 e6 z
  2.   ...
    7 Z- L- M0 U5 W) V/ _5 B9 e7 n
  3.   <httpProtocol>7 U- e! Q' O& V! g4 q( Z- k
  4.     <customHeaders>
    4 ]% Y2 K* A# o3 M$ A* Q
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      
    ; {6 x# l  Y7 I; t7 j; V% o. H
  6.     </customHeaders>    / f. a% j! ]% ?0 d6 I  Q; N  C
  7.   </httpProtocol>  
    7 o; y6 l" [. X# T; J! t
  8.   ..., i/ w3 c) m4 J
  9. </system.webServer>
复制代码

! @0 N% p! a: T( P! u2 x之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。
" D! R+ U% l$ e) t
0 \% t) l4 A: m. n5 j* e9 M3、推荐解决方法。; s) z5 X) x4 B
  1. <script language="javascript">  
    ( y" ?3 ?; w8 U2 O) W" o! O1 u# @
  2. if(top != self){! F; |- d7 ~, [) K; K" R! x" d& \& D. q
  3.     location.href = "http://xp6.org/iframe.html";  
    # J: a# p% e! s' z/ F$ ]% H  Z
  4.     top.location.href=self.location.href;5 M+ v( @2 f2 o, K) j. W2 T1 B
  5. }  
    " s4 e) o# m6 L. r- B$ v, H
  6. </script>
复制代码
5 I% f. O1 t& u0 ~1 [
将上面的代码复制到需要屏蔽页面<head>里面加载。  `% m8 y. `, J7 T: p: ?! R" h
制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。
, S/ L3 e6 o% q2 ~. s1 u9 n8 a* O原理:
2 y" j; F5 y& f: c. n! W. \第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。
) `9 g9 F  }" |; c( f  C+ s  [$ w第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。. t$ o% h  F; H  y" r
目前测试这种方法没什么问题。7 ?  q( Y$ w6 M; l  M
! {9 h3 u+ \" e* U
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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