|
|
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。7 A9 Q/ j% a \
这次讲一下如何防止自己的网页被别人iframe。- E% b* l6 C7 Z9 T4 p: p
. t+ G+ |+ ~9 @1 c, q" ^
1、这些方法都可行,但不是太可靠。
+ S+ X+ n/ M# d0 |/ J7 ~6 c; b- <script language="javascript">+ V& V0 P. L# V- H( K* u5 [& E
- if( top.location != self.location) top.location.href=self.location.href;
* Y6 z2 d* }2 L; V/ w - </script>
复制代码 或
# ~9 \! d' m9 p2 N- <script language="javascript">4 i4 u7 H3 w6 |) L. G5 Q
- if (top.location != location) top.location.href = location.href;2 L& P4 e0 _; X
- </script>
复制代码 或
1 Q7 |& X* _, d& U- <script language="javascript">
9 M! E i5 p9 c: L/ { - if (top.location != self.location) {top.location=self.location;}9 F" ^9 b, b$ r' R6 F
- </script>
复制代码 或
! W* y! ]- I; \1 s: J/ V* m4 _) v- <script language="javascript">
8 l; Y& ]: W! J - if (top.frames.length!=0) top.location=self.document.location;% P/ E+ K* b: b0 W4 a. R+ C2 c
- </script>
复制代码 不可靠的原因:8 L7 }$ |0 o/ }' @3 r s- e. s
当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。" Q5 ~0 j0 Q% O0 ]( N& }& ]
- <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> e( l" T+ G, s2 H x
- <script language="javascript">
3 M1 o3 n4 ]# ?9 l- Z* f' R* F - var location="";
. Q) F7 e* k: x& \) r - var navigate="";
4 b% c! i+ h/ r' u( ? - frames[0].location.href="";
" u" \- A6 ^8 M% ^" @ f' R$ P4 G - </script>
复制代码 或
$ _' s- M$ Z* M! v7 |- <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码 或
0 B% X/ L! ~7 Q' a& o3 W* d% w; Q5 `3 c- O9 V
- <script type="text/javascript" charset="utf-8">' s5 _8 d( U: U; ~5 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>');
) {2 o' v6 V7 ] - </script>
复制代码 2、代码层次的屏蔽,方法可行,但不是很人性化。/ [* D1 o- j) I- h, n b, {' Z
Meta标签方法
, e7 x$ _( i6 P1 o# ]- <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码 PHP方法
7 H# D* L% y! ^! v9 ~- <?php header('X-Frame-Options:Deny'); ?>
复制代码 Apache主机方法# ]) g; j" e4 L/ A3 U/ g% A
- Header always append X-Frame-Options SAMEORIGIN
复制代码 Nginx主机方法
6 }3 v* y2 g! M3 ^- @7 l( P" ^% w- add_header X-Frame-Options "SAMEORIGIN";
复制代码
- E [( \! f) B.htaccess方法
! d- a! D* g e0 a% _' o- M在网站根目录下的.htaccess文件中中加一句7 _) m2 q* _( D( x8 q+ j9 h& C
- Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码
( E- C! l/ o5 PIIS方法$ ]8 E$ i$ c/ F" B' u0 G0 W
在web.config文件中加- <system.webServer>
, H1 n5 v2 @/ _! C - ...
& Y# S& B- B# j - <httpProtocol>4 A4 t- b; e v$ @% K" G
- <customHeaders>- Y+ h X$ L* k, m4 k6 a# f
- <add name="X-Frame-Options" value="SAMEORIGIN" /> ) ~4 s: b* C( k( t( I& ~6 A
- </customHeaders> ' e8 z/ V" n9 t7 E/ [
- </httpProtocol>
* \) `2 X+ i0 v g B2 C - ...
, {& U, ?# k* b4 V' B0 a$ ^; a* u, S( Q - </system.webServer>
复制代码
% M& b8 r) F$ ?3 z2 e之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。0 X) U! n3 a% e
- _2 ] t. ` _3 }3、推荐解决方法。
. r) P$ E# k, x& T( D4 ~* l- <script language="javascript"> / d! A; y: ^4 x( h2 M6 X, ~
- if(top != self){/ V& u/ l) B2 ?% ~* y- |1 p8 E1 K
- location.href = "http://xp6.org/iframe.html";
' o$ a' f6 e- W+ w$ u8 a6 o - top.location.href=self.location.href;- H8 ?3 O# r8 G" J1 I, w6 P
- }
; l" U. J+ \1 p# @ - </script>
复制代码 + g. I7 D4 W( y
将上面的代码复制到需要屏蔽页面<head>里面加载。
' l7 U) u5 n/ F' O2 x+ O. r B0 e制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。2 z& X; F5 ^# V% }
原理:
" j/ J8 Q3 X# V第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。 _, _( T& P2 G& R5 v
第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。$ ^1 A- N+ B( J! l o
目前测试这种方法没什么问题。
@5 R2 ~# O5 m. k8 H! g' Y5 C- s }1 u- V
|
|