搜索
查看: 14445|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。
2 t, q- K' ]; T) U这次讲一下如何防止自己的网页被别人iframe。
& T* l: Y/ M; D, Z7 Z$ }
4 i! `, R$ _) ^, b3 c$ ~/ L1、这些方法都可行,但不是太可靠。$ `+ j* g7 ]% J$ S( S
  1. <script language="javascript">1 R) H) G2 s; ]2 X7 }
  2. if( top.location != self.location) top.location.href=self.location.href;( Y0 h" x( F( {3 B) z
  3. </script>
复制代码
; N* c' |$ d+ w& c. ^) Q, N2 r
  1. <script language="javascript">4 B* C+ o2 H' [0 s
  2. if (top.location != location) top.location.href = location.href;
    5 o7 X' U$ @9 x2 e4 Z
  3. </script>
复制代码

: ?3 d8 `, n, w! p' T. m, J  _
  1. <script language="javascript">1 y9 s$ s5 U# e4 U
  2. if (top.location != self.location) {top.location=self.location;}
    $ T6 j$ N& j/ M' ^/ u
  3. </script>
复制代码
: g) x1 i6 `9 [' n/ ~" c
  1. <script language="javascript">& s' j+ z& Y: j4 |) {3 _, u- f
  2. if (top.frames.length!=0) top.location=self.document.location;
    4 g. _2 V1 g" h( D! U
  3. </script>
复制代码
不可靠的原因:
' A+ R0 l, I( ?8 z8 B7 N  l当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。
+ ?5 a8 Y$ O' |* l- y5 B; a3 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>1 L" R: [' d( z  z) C& q% ~
  2. <script language="javascript">
    8 B+ Q( Z( @3 k! H" C
  3. var location="";9 @; r8 q" O- }) O; W7 H
  4. var navigate="";
    6 Z( ]- w4 U& X) M3 ?
  5. frames[0].location.href="";' F9 _9 K5 B# C# G& }
  6. </script>
复制代码

. }9 p$ b5 P1 @: v1 b
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码

- v( |! j6 }8 S: Y; a' y4 Q4 J* |0 z/ G& M& M* F
  1. <script type="text/javascript" charset="utf-8">
    : l- m( S6 Z  s' Z# u$ a9 z" {
  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>');" L% P( W# j2 [0 V3 M; X
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。
8 J- @; H( w1 I$ u% J' TMeta标签方法
0 g  f! D, V( G3 f+ n  O5 @
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法' o) o9 i- R6 e3 ^$ N2 V; G! c, |* ]( p
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法
5 F: A7 N0 V7 f  ?! Z
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法; E- w6 D" d, A2 S/ O- T8 b
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码

; r8 \& Z/ A1 \5 X.htaccess方法- f) w3 k$ o5 |3 c$ h; G) ?7 ~! S
在网站根目录下的.htaccess文件中中加一句6 D% `9 P1 U/ W: Z  [# w
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码

* v/ P! |6 M" c0 D/ f) o& g: TIIS方法
' ^  ~1 b" u- Z- a& ?% p/ H在web.config文件中加
  1. <system.webServer>
    9 c& d/ i3 B. D/ Y
  2.   ...
    $ u* b! A, e9 L& e
  3.   <httpProtocol>5 U: d" y; y7 L, s3 b/ v8 R
  4.     <customHeaders>
    ' {- U* E4 d( A9 I8 u7 m; j
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      
    & T& R! a2 m+ s& W% Z' B
  6.     </customHeaders>    ! v) M! ]# b! {! d, M; q+ E
  7.   </httpProtocol>    R/ }0 d3 j% Q: g
  8.   ...; Z" x2 A2 E" c& ^: R$ U8 ?/ h
  9. </system.webServer>
复制代码
5 |5 _- Z6 N8 T
之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。# I* C( l0 {- r- G8 \

$ D5 ?2 \3 F- }+ S3、推荐解决方法。/ {( `  l5 E0 N+ `
  1. <script language="javascript">  
    2 h( F; Z  r) v' Y3 s
  2. if(top != self){
    8 T- v3 N4 a% Y( p+ P* }
  3.     location.href = "http://xp6.org/iframe.html";  & }+ C, W6 A* ~, ^! u8 k; F; e; j
  4.     top.location.href=self.location.href;
    6 K" b. S8 c1 k$ q
  5. }  
    + [$ ]+ D9 P1 R- S( F) D  n9 u( A
  6. </script>
复制代码
8 h% Z8 D. C& e0 s
将上面的代码复制到需要屏蔽页面<head>里面加载。
! W9 r- {( L  e4 ^制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。
' P$ d$ j; G6 `& N6 `" _: M8 }原理:# w: b2 t6 c  z
第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。4 F( f7 l# @0 ~# t7 o) K; t
第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。0 `5 m4 U& k# \& S0 c
目前测试这种方法没什么问题。
. d' Q$ G& s( u7 X& `# q0 X6 |5 l& C) c6 C! Q7 y
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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