|
|
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。
U7 d5 Y" ?) E: e2 i这次讲一下如何防止自己的网页被别人iframe。; z1 i4 G1 q8 \, [! F- `0 e6 k
8 a5 _ I% l1 a5 P5 P- o6 ~
1、这些方法都可行,但不是太可靠。& {+ Y( [3 u! {6 D' }
- <script language="javascript">- m7 r) P2 @( L- j+ _* e) r
- if( top.location != self.location) top.location.href=self.location.href;5 M3 Q0 `" n' l9 _
- </script>
复制代码 或
0 e# ^4 e. b7 a+ A# a( }% X, F; C- <script language="javascript">% Q' f: c0 I! L% O: H. f+ P
- if (top.location != location) top.location.href = location.href;
r) a/ q5 V1 R# |$ G% L0 }1 i - </script>
复制代码 或7 D$ n% K" H' `& @9 c. r/ M
- <script language="javascript">. G2 O3 L7 Q* }1 P$ W
- if (top.location != self.location) {top.location=self.location;}2 B& s* ~. P& Z: I/ a0 L5 n( k; x
- </script>
复制代码 或) ]9 B( o3 p$ E2 ~5 I. F- W& W
- <script language="javascript">
! @7 m0 z6 s7 G" M+ w V- S8 k - if (top.frames.length!=0) top.location=self.document.location;
* R7 L, T8 N0 y" f! } - </script>
复制代码 不可靠的原因:
& g* |- ]2 A8 ]4 o8 s A当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。6 A. }/ i, Y$ Y% B" H
- <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>
6 X+ Y3 ]$ o$ q% W. y! K - <script language="javascript"> " c: F# _: M8 }8 D2 i, h. `
- var location="";
6 m. ]' \4 k% ? - var navigate="";
: }2 F0 b& u' R7 Q# z) S - frames[0].location.href="";# h+ G) E5 P4 b
- </script>
复制代码 或7 {2 R/ g' a) p4 Z3 p
- <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码 或- P" p' K( P* n
l! f. Q7 w6 A; T7 E5 A% R
- <script type="text/javascript" charset="utf-8">
1 l! F& f) T7 E6 l- ] M W, o - 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>');
' w0 g+ [$ s/ v; F - </script>
复制代码 2、代码层次的屏蔽,方法可行,但不是很人性化。
D( X |" T |2 A, X* p' i! GMeta标签方法: g) V8 I# x& ^' U! q3 g
- <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码 PHP方法0 E, h2 z) Q" }
- <?php header('X-Frame-Options:Deny'); ?>
复制代码 Apache主机方法
; e }2 r. x$ `5 D! p6 _- Header always append X-Frame-Options SAMEORIGIN
复制代码 Nginx主机方法. {; j! K5 j+ _' d; ~9 L
- add_header X-Frame-Options "SAMEORIGIN";
复制代码 - H8 U% z- a7 d, o. }
.htaccess方法
- X) A# g( k3 m% ^4 y% H4 n$ `/ z在网站根目录下的.htaccess文件中中加一句
7 |9 |5 s0 A7 _- Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码
( R, N; f7 i) C: O" h. ZIIS方法
! Q* j/ X1 e0 m% G7 x5 M* w9 h5 e在web.config文件中加- <system.webServer>. |, ]! |: v1 j, i i0 K+ }: K
- ...
! ^/ h# \# I4 R: p - <httpProtocol>6 L! x0 M6 ] q. u
- <customHeaders>+ |# `, |2 c/ c: Z% }
- <add name="X-Frame-Options" value="SAMEORIGIN" />
: g* A6 r6 y: H% \$ H - </customHeaders>
5 o" z5 E9 x5 A- U& w* f - </httpProtocol> 1 z3 ^; ?5 U2 J: G( o5 ^/ `
- ...
& b) N' ~; ~5 q. I- m' l - </system.webServer>
复制代码
: a6 E4 k" s" f2 p% z% i0 z之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。
5 a" j c# G4 d8 m7 n5 [* w* R9 R# {( `" o+ g1 L5 ~3 \
3、推荐解决方法。/ @% a7 }7 D! K% m7 m5 k" `
- <script language="javascript">
$ n/ A3 q! b7 f$ i' S5 z g8 D. u - if(top != self){# ^- L, G2 b- t& M8 g
- location.href = "http://xp6.org/iframe.html";
( f; k+ V# n; I+ H- z1 \ - top.location.href=self.location.href;4 B3 y4 Z2 E$ ?$ `; Q1 e7 D
- } . p7 N" H( T2 g$ }. `) t
- </script>
复制代码 6 c2 J* ], t- y+ g) ~# B. ?
将上面的代码复制到需要屏蔽页面<head>里面加载。
* J$ i4 a R3 e2 Z/ }# Y0 X制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。 A0 |3 c- v+ s" r: i7 |
原理:: O Q' Z) g- C$ h* H
第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。
8 e) z. o9 `+ b/ D) ~1 o: a第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。
! c6 L5 |; u: h. c. _8 ?目前测试这种方法没什么问题。" {* m' p& O7 X% ]8 k# _
4 J- q6 W d' W
|
|