|
|
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。. b2 o0 H6 U7 F% ^/ x' O& g. T v
这次讲一下如何防止自己的网页被别人iframe。. p0 K# ~6 e" [5 v
( E V b) A) ~1、这些方法都可行,但不是太可靠。 E5 [1 E' U& O" k+ Y( i
- <script language="javascript">
( y. W" {$ V) a4 l- e& h - if( top.location != self.location) top.location.href=self.location.href;5 k+ D5 ?7 @5 f7 S) c7 o: Z
- </script>
复制代码 或
, Z3 ~9 F. c% H5 y$ e- <script language="javascript">
" n% Q+ Z2 A* N9 b+ c - if (top.location != location) top.location.href = location.href;$ c T! K4 Y# G, A8 @& L. X
- </script>
复制代码 或
& W. i! r3 N/ d/ P! e8 W" |- <script language="javascript">
( c! P+ j5 a! S* j - if (top.location != self.location) {top.location=self.location;}( B. \. y/ V4 a6 n, Y4 Q7 @3 `
- </script>
复制代码 或
+ N z1 Q$ k; o9 d7 ~- N6 y5 S- <script language="javascript">
' [- [5 w6 H3 C8 K" N2 C - if (top.frames.length!=0) top.location=self.document.location;
9 }3 z6 T6 S3 k c8 i# @- o - </script>
复制代码 不可靠的原因:
4 g* T4 S# K/ c4 X% c5 L当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。- j. A8 s& ]* k* v; S& E4 P% h
- <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>7 A* k( [2 [& `0 @& `: y* _
- <script language="javascript">
/ W5 q8 D0 i6 Z4 ^0 _! G+ D' L - var location="";' m2 i: P5 X8 S8 w; P/ Q
- var navigate="";
# c. v/ J" N0 H* i - frames[0].location.href="";
U& H E8 j2 U1 F3 F3 \4 t9 b - </script>
复制代码 或
7 W& n2 U9 j5 |& R- <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码 或# l+ |- ]' `3 W! ?' B
1 u3 ]7 ]9 B! }4 q1 O- <script type="text/javascript" charset="utf-8"># v# l* z3 A& C" r
- 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>');
. T% o) K8 `" o6 s$ f5 R$ Y - </script>
复制代码 2、代码层次的屏蔽,方法可行,但不是很人性化。1 A( q" ]7 o3 q1 f; W* l
Meta标签方法$ z9 ?( {6 _) j- I% L
- <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码 PHP方法
4 d+ c d; w2 I/ L! c/ ^0 S2 u- <?php header('X-Frame-Options:Deny'); ?>
复制代码 Apache主机方法
) B- k! s( U e- M. H- Header always append X-Frame-Options SAMEORIGIN
复制代码 Nginx主机方法
. c0 z6 T( i3 C" e F6 u$ {( I- add_header X-Frame-Options "SAMEORIGIN";
复制代码
9 t. f- X6 [8 Q5 Q7 l; G6 F/ n.htaccess方法
+ N0 A7 q! V4 |在网站根目录下的.htaccess文件中中加一句! I" r1 C1 }4 k
- Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码
% N1 ?0 ~3 P& [5 cIIS方法0 [7 F( h! J" j) ]1 y; t
在web.config文件中加- <system.webServer>
- I1 \" N( V. ]: ?; U* o2 x - ...
- P' Y4 a) A+ n- N5 L4 R3 z% Q - <httpProtocol>
' \( R4 p; W: C6 M8 n8 Z% W; G- V! D - <customHeaders>
0 f9 M( _# ^7 w" f/ X' s - <add name="X-Frame-Options" value="SAMEORIGIN" /> 2 Y4 R/ O. }4 J, g
- </customHeaders>
# b+ ]$ h' D- t - </httpProtocol>
! q, ?) R# Z ` - ...
. d8 D( S) h0 ]8 m" y2 u* k+ M( k" B8 f - </system.webServer>
复制代码
$ a( V& {7 E5 F6 G之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。
1 m! T: f$ c: H6 Y' ^/ U+ h! v! q# U3 ]8 G) c% W5 ^% q
3、推荐解决方法。
& V& E S* ]) c: m, a% z% B v; h P- <script language="javascript"> 3 ~2 Z6 _/ S' \9 i% n! B9 ^
- if(top != self){
2 ^ ]% L6 V! w. ]9 Q5 f - location.href = "http://xp6.org/iframe.html"; + R5 X# [3 r- m4 j! j$ y$ g
- top.location.href=self.location.href;2 ^6 \+ W2 j3 e$ l! Q
- }
( ^0 N- z7 G* h - </script>
复制代码 4 j) [0 _, L& k, e7 ?) C
将上面的代码复制到需要屏蔽页面<head>里面加载。
9 K5 q$ i/ T( x制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。
' x& ?2 B- G# j, O原理:
4 g1 K4 b# ]! E第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。
0 B' ?# H7 _( h: P第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。
& ]; ]) L5 O. u8 P$ b3 `, }& ]% l+ i目前测试这种方法没什么问题。
! g" Y9 M" |/ M% S
( m! o7 v) X+ a5 R' U v3 l, l5 d& K1 _ |
|