搜索
查看: 14316|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。
% L, S1 m7 K6 d! w. O) Z4 E' I  S这次讲一下如何防止自己的网页被别人iframe。
! l9 H: G  q' r+ u0 `9 ^
. X4 Z* C; t$ {1、这些方法都可行,但不是太可靠。6 S: n: a7 Q4 c& M  K/ }
  1. <script language="javascript">
    ( U$ N' B) f8 v: [' h+ ]' K
  2. if( top.location != self.location) top.location.href=self.location.href;
    % C! g& }# w$ ]; ~3 B- B5 D
  3. </script>
复制代码
7 N) t  Y8 ^' n' H
  1. <script language="javascript">! ~3 q4 d) g) m& y$ b3 Y' ]
  2. if (top.location != location) top.location.href = location.href;+ {0 Z4 q" I+ Z2 }5 j( f
  3. </script>
复制代码
1 L4 x8 ], S5 k2 o( T6 G
  1. <script language="javascript">
    ; Y& M, _, k' m, C7 u# w; W
  2. if (top.location != self.location) {top.location=self.location;}( g; Z7 c: I# Z$ ]  i
  3. </script>
复制代码
5 D* t0 K9 X" B. R) l  M
  1. <script language="javascript">
    ) X* T, q% c" I2 j" ~; K* Z% d
  2. if (top.frames.length!=0) top.location=self.document.location;0 ]6 {, `$ C5 Y3 U/ N
  3. </script>
复制代码
不可靠的原因:5 I" [/ ^, K! r' b/ {3 H. X
当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。
, T/ b2 ^: K, ^: a# U
  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>! C% j6 t/ R3 s( j( X1 z& U: C
  2. <script language="javascript"> 3 @$ w$ K2 e( R. y( t
  3. var location="";
    ( U  ^' J+ I( }$ `# K3 I* v4 `& `, R
  4. var navigate="";+ P# X) {0 p" f7 c
  5. frames[0].location.href="";
    & D! b& b' _" a( @7 R9 B8 z+ m
  6. </script>
复制代码

/ y% Y3 `' i6 K2 f' D+ Z2 F
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码
; u2 Q- T& H6 v% W9 u$ P* Z
, ^" E* d: q) c2 S7 ~$ H& a/ t
  1. <script type="text/javascript" charset="utf-8">3 Y+ I$ c+ U+ @" }- g8 j
  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>');3 K7 x( F/ f* N2 N
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。' l3 X( Z' b& g) `' Y
Meta标签方法2 X8 _/ N" ^' N& |+ j0 Q1 N
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法, v9 i7 W6 ^2 W7 @! c6 p3 M
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法
- Z- [7 A' S" n- W+ \
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法+ k: g, k4 x1 U/ |
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码
$ _( T: D& `  j4 \$ a0 Q$ L& q# E) R
.htaccess方法
0 d. I- K9 c8 a# q/ B在网站根目录下的.htaccess文件中中加一句6 V0 D( v* ?" Q2 {, V& N3 \
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码
1 B' o3 h2 e2 M& q& \  y% [8 I
IIS方法
/ L( n5 d4 X/ u8 T% b- y& t1 W) [在web.config文件中加
  1. <system.webServer>0 C* \- O& d$ t- v, |
  2.   ...3 U; `+ ?0 x" l1 Y
  3.   <httpProtocol>) x! m7 a0 v0 c& |  }. u
  4.     <customHeaders>8 ?0 _1 s9 C: B
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      
    . L- x/ `' {9 ^2 D. [
  6.     </customHeaders>    2 l3 @; c9 Y6 w0 ]" f8 {" ~2 x
  7.   </httpProtocol>  ; W, |1 n5 A4 c9 w* l2 |* v" s
  8.   ...2 n1 r! O  o* Q) N2 y
  9. </system.webServer>
复制代码

9 _* d- [/ O! E之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。/ S9 h( D7 h2 Q3 ?0 A9 k

( K: R7 Z) E" {; m. Q) M3、推荐解决方法。" ~6 z3 g7 l" z" }6 q# {
  1. <script language="javascript">  - K: }' N1 a$ @' X
  2. if(top != self){
    & i: C% n, Z( H* A' ^: x* p8 h
  3.     location.href = "http://xp6.org/iframe.html";  # n4 C* A) q; u$ l$ d  Z) _
  4.     top.location.href=self.location.href;
    9 r* ]5 w( i1 K) r4 I9 I" q: F& c
  5. }  
    - q$ O2 |: ^9 ?: S" X3 m
  6. </script>
复制代码
6 R2 {% {- S% e6 ^  s
将上面的代码复制到需要屏蔽页面<head>里面加载。
7 P4 |! v. m+ a5 a, s0 F7 Z制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。
6 h1 g, C  h8 c- Y& y, Q原理:
! ]* w; `: h' `. f第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。
* Q- |* ]5 A6 ?. P' a$ Y- {: c3 h第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。* Q" o  r( W  q! B! N! `
目前测试这种方法没什么问题。' A& ]( I/ \9 G! Z
5 a. ~; r8 r8 Y2 g; G" l9 m
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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