搜索
查看: 14640|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。  r3 V8 i  o& q1 \7 U5 D
这次讲一下如何防止自己的网页被别人iframe。4 M5 Y* X6 P; l0 G/ ^2 j

1 C0 ~. ^2 R8 j( l1 H/ r1、这些方法都可行,但不是太可靠。. D/ ^% D: T$ X
  1. <script language="javascript">
      M4 k: l' t1 w$ W: a
  2. if( top.location != self.location) top.location.href=self.location.href;( S+ ]& B) m% H  y& }' @
  3. </script>
复制代码

+ x+ E1 ~! b. i5 F. V
  1. <script language="javascript">8 v, Q6 o6 x$ \/ Q; p; U7 S% n
  2. if (top.location != location) top.location.href = location.href;% [* \% O+ G& N5 a" F- B
  3. </script>
复制代码
$ C6 i; h% ?3 I% t  K7 m5 }
  1. <script language="javascript">
    * y5 @" F- s  ~$ Z; {5 b/ @
  2. if (top.location != self.location) {top.location=self.location;}, ^+ Z5 C9 |- L+ G- [
  3. </script>
复制代码
& d; ^; [" |, Z" y* ^! t
  1. <script language="javascript">
    ) o8 u* L: s; R7 R$ _, }! b
  2. if (top.frames.length!=0) top.location=self.document.location;& j# j# Q+ k  M) F
  3. </script>
复制代码
不可靠的原因:& d" n3 e7 w8 R
当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。1 W2 W# \9 u4 e- i9 R/ 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>
    $ P; u% b; l  ]. d' g% _8 q
  2. <script language="javascript">
    3 R8 q+ J% z$ e: e% ~
  3. var location="";( u; h" Z- ]2 e4 }# j9 M5 s7 F
  4. var navigate="";0 K; k) W( Z; D' t
  5. frames[0].location.href="";# P' h  N9 o$ v+ l
  6. </script>
复制代码

" D+ u& I7 H7 V9 L" L9 K. V
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码
+ q/ ]/ ^$ m( W* W" }

$ }/ M- w9 f" H2 s- o4 [2 N3 V
  1. <script type="text/javascript" charset="utf-8">
    / \$ q; r- ^/ u# W, x8 W
  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>');; y# R: |, K5 N2 R9 j. }) A2 X! F
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。% t* I* p9 J6 I0 N; w0 o
Meta标签方法  s0 _# c5 h, ]7 S8 T3 p$ o
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法
8 Q5 i+ i" o/ i% z! \" `
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法9 O% T6 i. u2 Z; ~7 g4 `
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法2 g. s+ J% u) l3 O. f8 N
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码

5 ^9 k& I& J: S.htaccess方法
( h5 p6 G: @- e' J7 c9 g9 l6 P在网站根目录下的.htaccess文件中中加一句
) {9 @0 h4 g# O2 K. ]1 L# [4 g5 P) X
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码

  R- r0 }6 W" S, o/ o2 J# hIIS方法# P$ o$ D. ?- }
在web.config文件中加
  1. <system.webServer>
    / i/ n% \5 M3 e; h
  2.   ...
    / a+ C5 n9 Z" O; p; k
  3.   <httpProtocol>3 c% D) J! @4 i2 n2 y7 r, Z) `2 {5 `& G
  4.     <customHeaders>% e  s4 y2 T/ c, I& w
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      
    / R  W3 N9 w% x# o- z) ]5 R$ ]
  6.     </customHeaders>    3 o" g5 W( _3 G1 t8 ^) v% m
  7.   </httpProtocol>  
    ( G- `! H4 b1 F/ W9 j  q6 l5 \" v
  8.   ...
    * b7 o. C( S, f) e* \3 F/ f
  9. </system.webServer>
复制代码

; Y& A5 Y, k, }" J之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。
2 Y* W4 j( a- ?5 o/ e: U" W! v8 A
2 E4 E" _% P: D3、推荐解决方法。
) ^' V7 f8 U  u& I& W1 y) f
  1. <script language="javascript">  $ o$ {6 v' Q9 G+ X- c* a) X& V& e0 y
  2. if(top != self){
    " h4 [; n4 w: r- I1 c/ e
  3.     location.href = "http://xp6.org/iframe.html";  
    4 J- r( Y9 }4 d1 i0 h# K# Y+ G
  4.     top.location.href=self.location.href;
    $ |3 [, l: K* ^5 S* u
  5. }  
    1 r  I/ X8 J: E" c3 z2 t/ B
  6. </script>
复制代码
1 Y6 e' P8 X2 S5 h) M( R5 I
将上面的代码复制到需要屏蔽页面<head>里面加载。; F5 m% f- v7 {4 ~+ E  t9 V) j' b
制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。
, l  a/ [0 ^$ B" R2 M* r7 D  W原理:
# e- h/ \& d# W: `第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。5 [) W' Z, t2 D9 I, w- q
第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。
7 O7 |0 o0 u% ]# q8 V& Q0 s目前测试这种方法没什么问题。
: @; E7 c$ F5 i9 |7 b+ U% H# S
% I1 R+ T( v9 K
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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