搜索
查看: 14380|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。* J( R9 D$ O; h1 @5 |
这次讲一下如何防止自己的网页被别人iframe。3 ]. K% X2 B1 I& ?7 [& B- W1 V# L
2 U; p2 P+ {/ l* D0 m
1、这些方法都可行,但不是太可靠。* i# v) b4 K" e) L; j0 l' f, B
  1. <script language="javascript">9 u& S, a4 B  m  h( ]
  2. if( top.location != self.location) top.location.href=self.location.href;3 V$ ~9 k( s3 N$ T
  3. </script>
复制代码

! k4 @' W, n3 n7 ^9 H
  1. <script language="javascript">7 }5 l, p* I- V. ~( D4 ?
  2. if (top.location != location) top.location.href = location.href;
    , c2 R& ^, n6 _. h9 E8 c5 k$ H
  3. </script>
复制代码
* V: V" z" P* e1 Q
  1. <script language="javascript">  k4 _& F" e& `9 Q: @# P
  2. if (top.location != self.location) {top.location=self.location;}
    4 X% }$ N# y7 F9 F* ~+ ^# J
  3. </script>
复制代码

9 R. g; o( u& C( |* z
  1. <script language="javascript">' H$ h3 k( m7 k6 p
  2. if (top.frames.length!=0) top.location=self.document.location;- u5 `3 b: |8 I, @0 t8 [- I3 A
  3. </script>
复制代码
不可靠的原因:. V" x0 m7 z8 s' L+ S% [! i7 C
当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。
; F1 f: g& ?* }0 ]( I" c, L
  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>
    6 W& H! t* h% q# j
  2. <script language="javascript"> ! R( o4 Y3 f8 z3 g/ Q7 X
  3. var location="";
    , U( d8 V- ?7 _% f5 Q0 q! \
  4. var navigate="";+ k5 V" V2 M; X4 }5 r0 m
  5. frames[0].location.href="";8 G1 y0 s  w/ s) e* s
  6. </script>
复制代码
) `$ N: V& f4 k
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码

7 ]8 a7 R* w7 [) s) P" y: w- w4 i2 \5 N7 G, x7 |6 t
  1. <script type="text/javascript" charset="utf-8">, A& U% }4 X" m: k/ K7 A) j
  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>');$ R; g; A9 m; Q* a' L5 _! K
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。
4 e& s1 h- _9 G6 _Meta标签方法
( C- Q/ d7 P7 ]* }2 u& q
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法/ c( b2 g9 J5 `6 O6 L) p' h
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法
! f$ V4 F- x6 @- ?0 y; K0 g
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法: I' ~1 V$ M% z2 P
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码

) ^! n) ]; e, y$ ~; R.htaccess方法' E( `7 K5 e/ N8 w/ ~% m
在网站根目录下的.htaccess文件中中加一句
) U# m' V9 ]3 v& z( k
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码
, z+ S0 x# K  I
IIS方法- n+ a7 q! ]# ~' l
在web.config文件中加
  1. <system.webServer>
    4 s/ N& c# a, G1 n$ T
  2.   ...  d: _8 B9 a) Q: E$ n
  3.   <httpProtocol>+ S, E5 q3 n9 R- ~9 m, L
  4.     <customHeaders>2 Z7 _% f6 M" I6 t  w+ ]
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      
    2 E+ x* R" ~! A) _7 I# ^
  6.     </customHeaders>   
    % ^. z# f* x8 h8 {0 r7 n6 g# n
  7.   </httpProtocol>  
    ! D2 Z* i# w0 r: }7 h
  8.   ...
    9 Y7 l5 v4 V1 y/ }
  9. </system.webServer>
复制代码
# |4 G, h. c( h0 L
之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。
7 \) [$ u! z  j/ Y9 C8 a% W7 |7 T9 J0 v
3、推荐解决方法。4 S" c- D4 x* ]$ M1 f' S8 f
  1. <script language="javascript">  
    5 s9 ]* ^8 [/ S! P, W; z/ x
  2. if(top != self){
    4 o. ~8 T" a6 j# a4 A1 P
  3.     location.href = "http://xp6.org/iframe.html";  
    $ Q+ _& T  j2 l9 v, l
  4.     top.location.href=self.location.href;( w+ K, T2 h* F; ]7 l6 w
  5. }  
    9 Q- Z% k( O0 n" X: n
  6. </script>
复制代码
0 `! U- o( f$ I+ i) h1 u. r
将上面的代码复制到需要屏蔽页面<head>里面加载。" T" z/ c6 e+ P) q% Q' c2 P: t
制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。; V( H1 J9 u- n$ S/ g+ ]
原理:
& h3 u  T( d6 i+ r& ]第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。6 j$ `$ |" |% Q( ^0 _2 }5 O  S
第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。
1 t2 _$ L# E" [  b* X目前测试这种方法没什么问题。" ]" y& O# O6 k1 M% k
" e( r( e6 m( G
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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