|
|
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。) ?; i. k( j! t- ]- J! g( d( d
这次讲一下如何防止自己的网页被别人iframe。( v7 ^7 R) D! D5 u3 v
% i3 [/ b$ w, C- ?/ B% x- K( M4 O1、这些方法都可行,但不是太可靠。4 Y3 F4 t, q: n
- <script language="javascript">* l. y( N- K- x, O+ v
- if( top.location != self.location) top.location.href=self.location.href;: y* w5 g: z5 [: y
- </script>
复制代码 或
9 q; u$ G( s& a' {- <script language="javascript">4 J3 W8 z2 e9 {1 e$ k1 W3 }% `
- if (top.location != location) top.location.href = location.href;% i1 _: n0 i9 k% F+ y
- </script>
复制代码 或
, Z1 C* K: ?/ P- <script language="javascript">
; U/ r# h, p. ^! S. E - if (top.location != self.location) {top.location=self.location;} i& |4 x5 l6 u4 u- u7 l8 V% }
- </script>
复制代码 或 g* ~! V) _/ K3 x. X5 l! F
- <script language="javascript">
) B( @& m9 a4 E6 x/ l - if (top.frames.length!=0) top.location=self.document.location;% c4 s/ b! h4 {1 l) [. Z& j
- </script>
复制代码 不可靠的原因:' Y! k$ `0 D8 h# D/ d8 i# c
当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。
# U& [' ]! x8 A* i- <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>
' ?, U" X& c! ~) ]4 K) T - <script language="javascript"> : ^4 E! O; U( @) B0 F, j- {& o
- var location="";
) m' {' M! X" D0 Y0 F: N" l - var navigate="";! i9 A# l" G6 @' ~. W X5 r
- frames[0].location.href="";8 ~ Q! g$ W' V9 X1 @7 ~+ n* W9 X
- </script>
复制代码 或 X4 E. ]" e4 {) Q
- <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码 或
! a u$ ]0 f. z9 [; o S! O* w$ b9 W: Z' b8 G( h
- <script type="text/javascript" charset="utf-8">
2 g# @! b$ q0 I1 O& T# _ - 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>');
( F5 W/ d2 [8 a' I8 ]. P. h: O - </script>
复制代码 2、代码层次的屏蔽,方法可行,但不是很人性化。) h, y! p7 i8 K3 b0 J
Meta标签方法0 n1 k# O4 p0 C/ l
- <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码 PHP方法
. y4 Q: {2 {/ _5 m# I# E) K2 h- <?php header('X-Frame-Options:Deny'); ?>
复制代码 Apache主机方法
: E7 j; x8 A# h/ d1 b- Header always append X-Frame-Options SAMEORIGIN
复制代码 Nginx主机方法1 B7 h# d' k+ ]- U4 i0 ]& Q4 A
- add_header X-Frame-Options "SAMEORIGIN";
复制代码 3 q/ \* e$ U: G# E, n
.htaccess方法
! t: x4 R/ t" ~; t在网站根目录下的.htaccess文件中中加一句' o) K" {% T- |/ D+ n7 K% F5 n
- Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码
6 O( N# i+ Z! F. n( jIIS方法
/ N* c( A0 f$ w, c8 ~! S在web.config文件中加- <system.webServer> a- ^$ A/ a# a9 Y n( p
- ...
, {# t; ^- V5 F V$ L$ r3 p - <httpProtocol>, a( [2 |2 i6 a
- <customHeaders>
5 W% h: d, |5 V) j% ]* x - <add name="X-Frame-Options" value="SAMEORIGIN" />
3 K( a [$ w% R; W* Y - </customHeaders>
# H& R0 [( v( [' f6 t$ x: S - </httpProtocol> 9 p: e& Y7 B% C0 a5 y
- ...) R6 N& C) f9 Z; c- |* s. _
- </system.webServer>
复制代码
: `4 w( [7 _7 ~( y4 v7 Y l8 [之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。% T! p R0 V C6 J$ [
- b3 I6 ^; p& V+ i v3、推荐解决方法。$ x* T, h$ S1 q! z
- <script language="javascript">
3 _4 u1 b: x B2 Z5 \ - if(top != self){% n4 R( O# O; E/ Z- k; J
- location.href = "http://xp6.org/iframe.html";
$ c2 F/ p4 l- q; e/ A - top.location.href=self.location.href;
7 g V5 X' x+ o2 ?9 H3 } - }
0 Q3 Z5 ~/ [2 Y q+ i5 o - </script>
复制代码
' i/ Z9 e" U# Y9 o# }将上面的代码复制到需要屏蔽页面<head>里面加载。
) N/ T9 H( \! y制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。 ?1 J% G) Z* c( ^1 w3 y) P8 w$ N9 }
原理:( U/ Q0 M9 o ]* u* Z/ J, M6 n( q
第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。2 f+ T; s) n3 _$ q' d" }
第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。" p, |$ v/ r3 \0 P
目前测试这种方法没什么问题。9 f0 c/ V5 G8 A+ Q- H E
" K* y9 ?. U( b" X$ | |
|