|
|
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。4 |* e7 t, Z6 ^7 U8 p
这次讲一下如何防止自己的网页被别人iframe。
) a2 W* ~5 G, \/ j0 d) K9 {
6 K6 x# b4 T8 |& o, n1、这些方法都可行,但不是太可靠。
3 c% R- o5 N6 } X% u- <script language="javascript">1 v% b) i& _: R8 v
- if( top.location != self.location) top.location.href=self.location.href;) q9 ^( \( s* B3 k! ]; R3 ~
- </script>
复制代码 或
6 [3 m: f* `4 M D' a( |- <script language="javascript">
6 ?- G, Q5 F/ `6 y% g. f6 {$ q - if (top.location != location) top.location.href = location.href;
5 p( I3 |! N7 u, l; N - </script>
复制代码 或2 m2 i. {6 O- b, \$ I. S3 ~) ~
- <script language="javascript">
3 j7 h/ n6 G" {8 q - if (top.location != self.location) {top.location=self.location;}, c1 H" e8 {1 U1 Q0 s3 n/ b0 k
- </script>
复制代码 或* x& X- ?, U0 f; a1 r
- <script language="javascript">/ `' ~: T! v `$ V; q+ U
- if (top.frames.length!=0) top.location=self.document.location;/ X' B- i, k7 O& }+ H$ G7 x2 l! `- I
- </script>
复制代码 不可靠的原因:
6 ^$ D" K( _, |# b& a& w/ g; v' ~3 l当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。
4 K7 Q) ]9 O% N* y- <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>( r+ W$ {+ z) u6 |$ e
- <script language="javascript"> ! A8 M! W( p* C& A, T5 |, K4 x4 L
- var location="";! _+ {% p0 a% l1 @/ Z/ O
- var navigate="";
( j& n4 l; g1 K4 G' T2 Y - frames[0].location.href="";
* |+ F! K- G" q8 r& K - </script>
复制代码 或
) s) h! U7 Y! m, ~- E2 a3 c4 i- <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码 或
3 T: t5 d1 }+ A e; N% i% h
! D6 P3 Q& ~. }5 Q5 m+ H2 g) Q- <script type="text/javascript" charset="utf-8">" E2 C5 j( K9 a% A4 T3 r h" E) E
- 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>');8 b l& g3 a: l
- </script>
复制代码 2、代码层次的屏蔽,方法可行,但不是很人性化。
0 |( q- H9 _( z/ {6 NMeta标签方法# g# }6 L7 Y; B3 \/ R
- <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码 PHP方法- S: @; U( K$ x: Z
- <?php header('X-Frame-Options:Deny'); ?>
复制代码 Apache主机方法 s' r2 w: a- l% G, l) Y
- Header always append X-Frame-Options SAMEORIGIN
复制代码 Nginx主机方法5 q2 \; f: m; K* `
- add_header X-Frame-Options "SAMEORIGIN";
复制代码
+ F8 G3 z& D& B- b. s! I+ X3 o.htaccess方法
1 ?9 }5 T0 x7 a5 G( f' H在网站根目录下的.htaccess文件中中加一句
' i+ M8 c, e8 t T- Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码 + q. z D7 @( W! ?) `
IIS方法1 s+ E+ ^' s0 _: d! N" `: y, e
在web.config文件中加- <system.webServer>
1 X0 H( l% y0 N* s" N% p - ...
# f# H. l2 v& |9 b. e) H7 j - <httpProtocol>
* M/ \# d( C% Z9 q- T! m - <customHeaders>5 f) s5 ]5 i5 e; H: p; f$ n+ i0 H) H
- <add name="X-Frame-Options" value="SAMEORIGIN" /> ; i: K& l. H, d/ R7 ~- O
- </customHeaders> + x8 B' T2 d& J6 L0 I/ {
- </httpProtocol>
+ \5 u8 {! n" @: O0 a2 w1 s - ...& m3 S( S9 D2 {9 ] g
- </system.webServer>
复制代码 / t5 U- \8 J- q9 W$ f/ d
之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。- u9 e# W% R( D" F, O
* {% j* z9 L. ~5 E) h
3、推荐解决方法。8 `+ {: B% U+ \2 G
- <script language="javascript"> ) q& P: Z$ p0 D3 f/ D0 a& L
- if(top != self){
8 @0 V Q+ z- H: _7 _! e) l - location.href = "http://xp6.org/iframe.html"; ; Q( f: ?* |& I4 c9 z, Q
- top.location.href=self.location.href;% m/ ]) d- _/ Z1 @6 @( A5 A# l& T
- }
5 H9 [1 H! v7 d; ]4 d" n% Q - </script>
复制代码
8 o; @" a- Y$ a l8 U( E将上面的代码复制到需要屏蔽页面<head>里面加载。 o( t4 y: d* g; [8 n
制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。: O7 c/ f1 k# P: n' ~; U
原理:
7 T. u# ^$ x' R0 H& x: p( V' u' y, _7 Q第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。
# [4 Z! D, o5 T. _第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。
# g; T* J u" F' M/ L目前测试这种方法没什么问题。
3 ^( D% y }. l# n% V0 P# g
. `! V9 F0 ~/ J' v |
|