搜索
查看: 14390|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。7 A9 Q/ j% a  \
这次讲一下如何防止自己的网页被别人iframe。- E% b* l6 C7 Z9 T4 p: p
. t+ G+ |+ ~9 @1 c, q" ^
1、这些方法都可行,但不是太可靠。
+ S+ X+ n/ M# d0 |/ J7 ~6 c; b
  1. <script language="javascript">+ V& V0 P. L# V- H( K* u5 [& E
  2. if( top.location != self.location) top.location.href=self.location.href;
    * Y6 z2 d* }2 L; V/ w
  3. </script>
复制代码

# ~9 \! d' m9 p2 N
  1. <script language="javascript">4 i4 u7 H3 w6 |) L. G5 Q
  2. if (top.location != location) top.location.href = location.href;2 L& P4 e0 _; X
  3. </script>
复制代码

1 Q7 |& X* _, d& U
  1. <script language="javascript">
    9 M! E  i5 p9 c: L/ {
  2. if (top.location != self.location) {top.location=self.location;}9 F" ^9 b, b$ r' R6 F
  3. </script>
复制代码

! W* y! ]- I; \1 s: J/ V* m4 _) v
  1. <script language="javascript">
    8 l; Y& ]: W! J
  2. if (top.frames.length!=0) top.location=self.document.location;% P/ E+ K* b: b0 W4 a. R+ C2 c
  3. </script>
复制代码
不可靠的原因:8 L7 }$ |0 o/ }' @3 r  s- e. s
当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。" Q5 ~0 j0 Q% O0 ]( N& }& ]
  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>  e( l" T+ G, s2 H  x
  2. <script language="javascript">
    3 M1 o3 n4 ]# ?9 l- Z* f' R* F
  3. var location="";
    . Q) F7 e* k: x& \) r
  4. var navigate="";
    4 b% c! i+ h/ r' u( ?
  5. frames[0].location.href="";
    " u" \- A6 ^8 M% ^" @  f' R$ P4 G
  6. </script>
复制代码

$ _' s- M$ Z* M! v7 |
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码

0 B% X/ L! ~7 Q' a& o3 W* d% w; Q5 `3 c- O9 V
  1. <script type="text/javascript" charset="utf-8">' s5 _8 d( U: U; ~5 e
  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>');
    ) {2 o' v6 V7 ]
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。/ [* D1 o- j) I- h, n  b, {' Z
Meta标签方法
, e7 x$ _( i6 P1 o# ]
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法
7 H# D* L% y! ^! v9 ~
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法# ]) g; j" e4 L/ A3 U/ g% A
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法
6 }3 v* y2 g! M3 ^- @7 l( P" ^% w
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码

- E  [( \! f) B.htaccess方法
! d- a! D* g  e0 a% _' o- M在网站根目录下的.htaccess文件中中加一句7 _) m2 q* _( D( x8 q+ j9 h& C
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码

( E- C! l/ o5 PIIS方法$ ]8 E$ i$ c/ F" B' u0 G0 W
在web.config文件中加
  1. <system.webServer>
    , H1 n5 v2 @/ _! C
  2.   ...
    & Y# S& B- B# j
  3.   <httpProtocol>4 A4 t- b; e  v$ @% K" G
  4.     <customHeaders>- Y+ h  X$ L* k, m4 k6 a# f
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      ) ~4 s: b* C( k( t( I& ~6 A
  6.     </customHeaders>    ' e8 z/ V" n9 t7 E/ [
  7.   </httpProtocol>  
    * \) `2 X+ i0 v  g  B2 C
  8.   ...
    , {& U, ?# k* b4 V' B0 a$ ^; a* u, S( Q
  9. </system.webServer>
复制代码

% M& b8 r) F$ ?3 z2 e之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。0 X) U! n3 a% e

- _2 ]  t. `  _3 }3、推荐解决方法。
. r) P$ E# k, x& T( D4 ~* l
  1. <script language="javascript">  / d! A; y: ^4 x( h2 M6 X, ~
  2. if(top != self){/ V& u/ l) B2 ?% ~* y- |1 p8 E1 K
  3.     location.href = "http://xp6.org/iframe.html";  
    ' o$ a' f6 e- W+ w$ u8 a6 o
  4.     top.location.href=self.location.href;- H8 ?3 O# r8 G" J1 I, w6 P
  5. }  
    ; l" U. J+ \1 p# @
  6. </script>
复制代码
+ g. I7 D4 W( y
将上面的代码复制到需要屏蔽页面<head>里面加载。
' l7 U) u5 n/ F' O2 x+ O. r  B0 e制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。2 z& X; F5 ^# V% }
原理:
" j/ J8 Q3 X# V第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。  _, _( T& P2 G& R5 v
第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。$ ^1 A- N+ B( J! l  o
目前测试这种方法没什么问题。
  @5 R2 ~# O5 m. k8 H! g' Y5 C- s  }1 u- V
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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