|
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。
* ~+ Y- m6 O+ P这次讲一下如何防止自己的网页被别人iframe。5 S2 r, n' O7 D$ S& X3 M
/ o, t; y. m$ M5 k
1、这些方法都可行,但不是太可靠。
# k1 s# S1 A- ?2 e. Q* s% Q- <script language="javascript">; M4 i& K, ]* ^4 b. P
- if( top.location != self.location) top.location.href=self.location.href;4 ?5 Z/ x% g5 L) h
- </script>
复制代码 或
Y0 M& w: X" ~; p a- <script language="javascript">. ^ C R( s3 Z
- if (top.location != location) top.location.href = location.href;6 `3 z' W, ~ ?, q( R
- </script>
复制代码 或
$ [6 g5 {5 o2 r) _" n3 _0 d. |/ F- <script language="javascript">
; H& v# J- s4 ~+ h8 s - if (top.location != self.location) {top.location=self.location;}# W$ Q5 x# t2 y8 ]! ?9 C9 T* _. T
- </script>
复制代码 或
5 G; S6 F' D" }3 ~6 {- <script language="javascript">
/ a" a, @' H5 l3 s, ^& T - if (top.frames.length!=0) top.location=self.document.location;
x, ~/ [4 x: k }* G2 l - </script>
复制代码 不可靠的原因:) ~- H1 ?' E. }6 F j( k* u: y1 R
当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。
" a! ]; a3 K+ }; K4 X+ |7 L. m- <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>
' y! v. k$ ^2 u) A4 a - <script language="javascript"> ( |! P: Z4 x$ q; r* \
- var location="";8 {* R/ U3 w2 B" G7 w5 W: L8 l- O
- var navigate="";
* F R4 a2 N8 l( U+ o3 a s$ E) c - frames[0].location.href="";
# L9 L" j# j! Q$ t, r: h9 v - </script>
复制代码 或: |# t3 x4 X+ A$ `9 h7 r
- <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码 或
; S; N+ i9 R1 v9 T) X* {! s
* @# j8 v7 Z8 N- <script type="text/javascript" charset="utf-8">
0 Z' h3 I" v, ^+ a - 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>');7 [, w! e3 w" V5 X5 B, N
- </script>
复制代码 2、代码层次的屏蔽,方法可行,但不是很人性化。! d2 @5 _/ q! g' C1 G. s, ^
Meta标签方法
' N, x( ?0 g3 a8 O- M' p/ @1 T- <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码 PHP方法
; F ^) y1 y4 I" W, S( J7 {. N- <?php header('X-Frame-Options:Deny'); ?>
复制代码 Apache主机方法) n# E4 Z# ], a9 r8 l% B# L
- Header always append X-Frame-Options SAMEORIGIN
复制代码 Nginx主机方法
% X& B$ O* w# Z& I- add_header X-Frame-Options "SAMEORIGIN";
复制代码
6 X- `0 h& l8 Y0 N" ?; Z.htaccess方法" }* E9 Z- P- s$ D2 v/ e
在网站根目录下的.htaccess文件中中加一句 }& d) q( j& ^: d5 E" o% N
- Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码
: V; f# j" s& y; P" D4 `, ~IIS方法
" S+ I* T) p" N- |# T在web.config文件中加- <system.webServer>2 N" O5 K4 C" x1 m; |3 g
- ...
6 s. A$ f" O9 O2 p7 Y B - <httpProtocol>7 P" ]6 p8 w* W M. I
- <customHeaders>! s( E: ]! W( F7 r2 I7 }4 U5 I
- <add name="X-Frame-Options" value="SAMEORIGIN" />
. e5 ~) `6 Z" j; K7 E# P! k1 ? - </customHeaders>
) z& }8 \( I& C* ~1 }* M" X. ` - </httpProtocol> . g5 l5 S* R4 E; W& n
- ...) O3 c0 s* w' ~$ f( A
- </system.webServer>
复制代码 ; v1 b0 W, S! K4 J# ^ h
之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。
) T, Q- o1 b+ s" a! l$ O
& ]/ f2 a! P/ b; O( H6 A3、推荐解决方法。
7 R# ?: p7 j& c1 N. o- <script language="javascript"> 6 A( }" R& l& d/ T# `
- if(top != self){( n* n' x( J4 v; E% K! V/ W) ]
- location.href = "http://xp6.org/iframe.html";
. T( |$ V( f3 y* m' C - top.location.href=self.location.href;4 O# A2 G" m! J' M# A8 V
- } 6 W' d5 e* s. n+ |
- </script>
复制代码
( \; j/ a2 W4 e/ C将上面的代码复制到需要屏蔽页面<head>里面加载。- y9 M" u( d- {8 Q3 L
制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。0 ?0 s$ E) R m0 p0 H& x% Z
原理:
9 t/ D6 {' V8 Q% _: h1 m l: a, @第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。& e7 p2 O" w' L! {
第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。4 d; f6 u/ h) X( x( } E4 y @
目前测试这种方法没什么问题。, e" \+ e* G9 y; T
% L% A7 L1 T; s3 y |
|