搜索
查看: 14369|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。
# M% W2 G0 a# n0 W这次讲一下如何防止自己的网页被别人iframe。
2 J- Z* B( ~' C4 }5 {8 W4 J8 g. Z9 U2 W4 O
1、这些方法都可行,但不是太可靠。* f/ c4 ?! r. g8 w6 c2 ^( o
  1. <script language="javascript">
    + T/ L% d  |( G/ m4 u
  2. if( top.location != self.location) top.location.href=self.location.href;7 M) V$ L/ i7 T  A" h9 g# G/ T
  3. </script>
复制代码
. e7 e; z; L/ J/ |9 U7 ]
  1. <script language="javascript">3 L0 F. r+ v. U& A- ~( ~3 W4 K
  2. if (top.location != location) top.location.href = location.href;; {, i" ~5 y# X2 e% I7 i( s5 }6 Q- R
  3. </script>
复制代码

0 ]; O% W" n6 c) `" i$ ?3 O
  1. <script language="javascript">
    / p# s% z9 L8 q3 O7 |
  2. if (top.location != self.location) {top.location=self.location;}
      L5 o: v! I, v8 Q( Y; V! y/ w
  3. </script>
复制代码
# i  V( ]! q! U3 ?* {6 u3 b9 r$ H
  1. <script language="javascript">
    8 k& J! Y; F6 S) V. q$ R$ t5 v# f4 v
  2. if (top.frames.length!=0) top.location=self.document.location;
    7 L6 E* p! x0 G& h+ _3 O" Z
  3. </script>
复制代码
不可靠的原因:. ^6 r9 ^2 ?4 e: a0 O: v
当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。
$ [+ S2 ]/ i6 L8 p; X. N5 o
  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>
    0 y  i  A5 ^+ L) [8 K0 j
  2. <script language="javascript">
    7 e+ Q- K( {5 k7 h$ ]0 ?' X
  3. var location="";! ~7 {5 q. |- \$ B6 ^! c/ t/ D4 a
  4. var navigate="";
    + ^8 R/ F" x9 H1 m9 V, r
  5. frames[0].location.href="";
    ) b( M% e% B+ [
  6. </script>
复制代码
' v2 a$ K' s. Q! W
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码

/ z9 w* @2 V1 g# w6 [' a5 _
  D+ T" p! @; n- j
  1. <script type="text/javascript" charset="utf-8">
    5 R4 t0 Q+ e6 i6 _  ]5 Z+ u- A- 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>');
    - [# n6 q9 J4 b* z  q% @, V
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。  W9 A$ }6 W; h7 g* m. w9 F
Meta标签方法
0 B1 b" s) I: A8 u7 G. K9 m) T* G
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法
. A+ z" P! \) w* u
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法
8 z' }4 i2 G0 _! n
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法& W( `4 H/ W; Q/ ^# F: }
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码

; ]& j2 B+ ]. ^) [.htaccess方法
8 V! c$ k9 d7 e; r9 I在网站根目录下的.htaccess文件中中加一句
* w* i$ U, D9 N6 `8 z& }$ Q
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码

' k2 U0 C. \: Q# W  @IIS方法
: ~- |. L: Z' ?# d7 U! v8 }5 V在web.config文件中加
  1. <system.webServer>" J# V% B* ?0 j# S6 `5 n
  2.   ...
    . H: f7 N" t5 R* j8 p5 n+ ]: r0 j5 A
  3.   <httpProtocol>% V7 u8 g4 O  b8 |+ X
  4.     <customHeaders>  f5 G! t. r5 @$ i) Y3 u2 Q
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      
    ' B  |3 f% E( w+ `
  6.     </customHeaders>   
    " ^- k7 D% v# ~
  7.   </httpProtocol>  / B. r3 Z8 v1 m
  8.   ...
    % F3 Q" ~( L0 I7 f8 m  J8 S
  9. </system.webServer>
复制代码
. j, y0 S( y& n8 }
之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。3 V; }- H+ \9 t/ N9 d6 I  {0 k2 f9 n

9 X3 h2 f6 n3 Q3、推荐解决方法。5 ]! h2 _- w/ N; _' I/ U
  1. <script language="javascript">  
    + x  C# p6 p& c" t! R" B8 Q
  2. if(top != self){1 \5 f3 f# u, O: _8 [% [
  3.     location.href = "http://xp6.org/iframe.html";  
    ! E/ M  }9 r# _9 s3 B
  4.     top.location.href=self.location.href;
    9 @1 }- t8 A* K: ~( x& Q" K, L
  5. }  - N$ f/ ^' A2 _, _" J
  6. </script>
复制代码

% T& r+ i( Y$ j; Q$ O! Y0 Z: \将上面的代码复制到需要屏蔽页面<head>里面加载。4 c& u  U% W3 _9 d2 l- z' I) ^
制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。
7 N  h  U, O+ t! d# C原理:# b$ m7 l, @& H) _
第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。% }' s) V) [8 F
第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。
) q! b! k9 G  F目前测试这种方法没什么问题。% \+ S5 {/ a7 F9 l4 H# ]

" f9 ~, x. |# n" A" N6 p5 {) `  n
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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