搜索
查看: 13903|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。
* ~+ Y- m6 O+ P这次讲一下如何防止自己的网页被别人iframe。5 S2 r, n' O7 D$ S& X3 M
/ o, t; y. m$ M5 k
1、这些方法都可行,但不是太可靠。
# k1 s# S1 A- ?2 e. Q* s% Q
  1. <script language="javascript">; M4 i& K, ]* ^4 b. P
  2. if( top.location != self.location) top.location.href=self.location.href;4 ?5 Z/ x% g5 L) h
  3. </script>
复制代码

  Y0 M& w: X" ~; p  a
  1. <script language="javascript">. ^  C  R( s3 Z
  2. if (top.location != location) top.location.href = location.href;6 `3 z' W, ~  ?, q( R
  3. </script>
复制代码

$ [6 g5 {5 o2 r) _" n3 _0 d. |/ F
  1. <script language="javascript">
    ; H& v# J- s4 ~+ h8 s
  2. if (top.location != self.location) {top.location=self.location;}# W$ Q5 x# t2 y8 ]! ?9 C9 T* _. T
  3. </script>
复制代码

5 G; S6 F' D" }3 ~6 {
  1. <script language="javascript">
    / a" a, @' H5 l3 s, ^& T
  2. if (top.frames.length!=0) top.location=self.document.location;
      x, ~/ [4 x: k  }* G2 l
  3. </script>
复制代码
不可靠的原因:) ~- H1 ?' E. }6 F  j( k* u: y1 R
当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。
" a! ]; a3 K+ }; K4 X+ |7 L. m
  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>
    ' y! v. k$ ^2 u) A4 a
  2. <script language="javascript"> ( |! P: Z4 x$ q; r* \
  3. var location="";8 {* R/ U3 w2 B" G7 w5 W: L8 l- O
  4. var navigate="";
    * F  R4 a2 N8 l( U+ o3 a  s$ E) c
  5. frames[0].location.href="";
    # L9 L" j# j! Q$ t, r: h9 v
  6. </script>
复制代码
: |# t3 x4 X+ A$ `9 h7 r
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码

; S; N+ i9 R1 v9 T) X* {! s
* @# j8 v7 Z8 N
  1. <script type="text/javascript" charset="utf-8">
    0 Z' h3 I" v, ^+ 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>');7 [, w! e3 w" V5 X5 B, N
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。! d2 @5 _/ q! g' C1 G. s, ^
Meta标签方法
' N, x( ?0 g3 a8 O- M' p/ @1 T
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法
; F  ^) y1 y4 I" W, S( J7 {. N
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法) n# E4 Z# ], a9 r8 l% B# L
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法
% X& B$ O* w# Z& I
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码

6 X- `0 h& l8 Y0 N" ?; Z.htaccess方法" }* E9 Z- P- s$ D2 v/ e
在网站根目录下的.htaccess文件中中加一句  }& d) q( j& ^: d5 E" o% N
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码

: V; f# j" s& y; P" D4 `, ~IIS方法
" S+ I* T) p" N- |# T在web.config文件中加
  1. <system.webServer>2 N" O5 K4 C" x1 m; |3 g
  2.   ...
    6 s. A$ f" O9 O2 p7 Y  B
  3.   <httpProtocol>7 P" ]6 p8 w* W  M. I
  4.     <customHeaders>! s( E: ]! W( F7 r2 I7 }4 U5 I
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      
    . e5 ~) `6 Z" j; K7 E# P! k1 ?
  6.     </customHeaders>   
    ) z& }8 \( I& C* ~1 }* M" X. `
  7.   </httpProtocol>  . g5 l5 S* R4 E; W& n
  8.   ...) O3 c0 s* w' ~$ f( A
  9. </system.webServer>
复制代码
; v1 b0 W, S! K4 J# ^  h
之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。
) T, Q- o1 b+ s" a! l$ O
& ]/ f2 a! P/ b; O( H6 A3、推荐解决方法。
7 R# ?: p7 j& c1 N. o
  1. <script language="javascript">  6 A( }" R& l& d/ T# `
  2. if(top != self){( n* n' x( J4 v; E% K! V/ W) ]
  3.     location.href = "http://xp6.org/iframe.html";  
    . T( |$ V( f3 y* m' C
  4.     top.location.href=self.location.href;4 O# A2 G" m! J' M# A8 V
  5. }  6 W' d5 e* s. n+ |
  6. </script>
复制代码

( \; j/ a2 W4 e/ C将上面的代码复制到需要屏蔽页面<head>里面加载。- y9 M" u( d- {8 Q3 L
制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。0 ?0 s$ E) R  m0 p0 H& x% Z
原理:
9 t/ D6 {' V8 Q% _: h1 m  l: a, @第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。& e7 p2 O" w' L! {
第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。4 d; f6 u/ h) X( x( }  E4 y  @
目前测试这种方法没什么问题。, e" \+ e* G9 y; T

% L% A7 L1 T; s3 y
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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