|
|
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。
) L+ Z& }1 N* Q. i( P1 [这次讲一下如何防止自己的网页被别人iframe。8 N$ v9 f& z1 o4 o7 z& N
+ c; U# i! Y( ~8 V% p
1、这些方法都可行,但不是太可靠。
. Z, B2 M6 R# R* i. e3 V- }- <script language="javascript">
* V' q$ E* y: z% ~) W e - if( top.location != self.location) top.location.href=self.location.href;" h6 Y3 @" ?7 z D
- </script>
复制代码 或" o) u- {2 ^ c: f9 ]
- <script language="javascript">- N' ~' W$ L# ~2 U& {
- if (top.location != location) top.location.href = location.href;: _0 L, u2 W9 t! O0 P% t
- </script>
复制代码 或
% C4 o0 H D# H- <script language="javascript">& E: g" `% I! B3 S; Y: S, j# S
- if (top.location != self.location) {top.location=self.location;}
! H% @5 W0 a+ Q# u - </script>
复制代码 或
. U0 b: s: Z5 H- <script language="javascript">
3 K4 c) p/ c! {& F7 ^) ^4 F6 f - if (top.frames.length!=0) top.location=self.document.location;
" B o; ?5 U! Q( k( V- x - </script>
复制代码 不可靠的原因:
+ j8 t7 J3 X+ w7 I当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。
2 i. g) F" Z: g3 X. ?- <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>8 l2 P+ K$ D1 s* t$ Y. M
- <script language="javascript">
" D- ~9 s& x3 C% I - var location="";
+ w: x4 {% g* w$ u% N - var navigate="";" G0 L' a; t; f* ?8 o6 A
- frames[0].location.href="";' l+ b* \( ^. ]7 ~8 C% ?
- </script>
复制代码 或! f# M/ t. W$ m% c8 ?# ]+ a. _# N
- <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码 或- z! n: A( `7 ]/ }1 \8 v- u6 A" w
( S3 K$ H0 h) |
- <script type="text/javascript" charset="utf-8">3 \: X% _. k, f3 k& 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>');% n( J+ h4 c! c) n( t- h
- </script>
复制代码 2、代码层次的屏蔽,方法可行,但不是很人性化。) n5 r. @, {( ?# ]$ d I& z
Meta标签方法
5 S+ }" ?/ o) E( m- <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码 PHP方法5 z- a5 m7 T& ]
- <?php header('X-Frame-Options:Deny'); ?>
复制代码 Apache主机方法
* \3 j# s0 k; ~) b- Header always append X-Frame-Options SAMEORIGIN
复制代码 Nginx主机方法
( R9 k. W: s: a0 N4 A; W9 D3 y- add_header X-Frame-Options "SAMEORIGIN";
复制代码
7 u' u7 A0 g$ A5 @3 V.htaccess方法
3 q; E s- F; D e在网站根目录下的.htaccess文件中中加一句
! Z5 t/ _+ l% p" n |% W- Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码
0 A. c K7 N+ k" mIIS方法+ H0 C- A7 c6 Z; ?; z ]2 g( T
在web.config文件中加- <system.webServer>
6 G$ D* ~/ C6 m0 h4 [' }! [6 O - ...
: P9 Y( _5 ^/ ~ - <httpProtocol>
2 e c2 T: _8 I' B. X' P - <customHeaders>0 l+ m+ B3 \! H# i' W6 }' l
- <add name="X-Frame-Options" value="SAMEORIGIN" /> 0 Y* Y( ^& ]4 d3 P5 h+ x
- </customHeaders>
U) o( H" M! h3 R - </httpProtocol>
. d- V5 q i& S) f' G* x - ...
; d1 }6 a1 I% M2 I- z9 Y* | - </system.webServer>
复制代码
# o& p& C8 r4 c- }3 d之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。 F! M8 Y g. K" q6 t w% j; {
3 H u& H7 H6 A" Y' W3、推荐解决方法。( l- s7 Q2 ^8 v. r. _7 p& y
- <script language="javascript">
& Z8 g; I, s. ?, ~2 q - if(top != self){6 k4 o. X' B( U; q% A2 V
- location.href = "http://xp6.org/iframe.html";
$ J$ b. y( v, U/ p8 U4 E - top.location.href=self.location.href;/ V: z6 p: @' v+ l; `+ Y, _
- }
0 ~2 Q! M$ ]) m- G) D9 e - </script>
复制代码 ; E: E$ X+ s0 x1 a+ o
将上面的代码复制到需要屏蔽页面<head>里面加载。
5 M: E. o! k$ C" V制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。 t* i* m* {( a+ D" L: G0 R! l
原理:8 |' P4 W) P" X$ M
第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。- \& g% [' F$ I6 ]4 @7 p5 g
第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。* C& n, y/ i ?! {, w' h8 i# k
目前测试这种方法没什么问题。
; E( G: J U1 i! L% Y$ E( h5 G. A! f0 @
|
|