|
|
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。
% R) Z4 n+ S% S' `# z+ a这次讲一下如何防止自己的网页被别人iframe。
. J( c- b2 h% L1 d1 s; `/ t/ ^2 `7 A4 Z: L& z
1、这些方法都可行,但不是太可靠。
: L8 E7 a& t- j; c9 N6 x" ?" c- <script language="javascript">6 [- v/ }8 U- L
- if( top.location != self.location) top.location.href=self.location.href;. }5 x7 f8 S* p" o. D) V7 D9 r
- </script>
复制代码 或' t }& J1 \. M0 w3 m
- <script language="javascript">& y9 A, d& t% {- Z
- if (top.location != location) top.location.href = location.href;" M2 [/ \ v* \& X- p
- </script>
复制代码 或
5 [/ w* Y5 _# i7 E9 g- <script language="javascript">! e1 N: b% X$ ?( |9 U4 J1 U N
- if (top.location != self.location) {top.location=self.location;}( J+ |/ `% d4 ^! M2 S) H) u
- </script>
复制代码 或0 j0 |8 m& r+ P7 K( h: m7 _
- <script language="javascript">
1 N5 Z- A5 F+ x5 a* y t" P6 G9 m4 ? - if (top.frames.length!=0) top.location=self.document.location;
7 T1 I ^# n; I; f - </script>
复制代码 不可靠的原因:
2 V. L8 p# @9 N+ c* a; P0 c当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。4 d) [0 y- {$ |( A8 }
- <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" H* S1 Q x1 X J( H: j - <script language="javascript"> 5 S; o9 _7 B8 @ G
- var location="";3 _& S$ T0 d( y* h+ W; @# ^, F
- var navigate="";
$ f# q3 i1 G, J" t$ e# n! p4 [, _ - frames[0].location.href="";
9 C3 Z" M2 e) t' I - </script>
复制代码 或
v a% Q6 F/ b7 w- y% Y- <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码 或- z" H4 q6 v& f L4 h( T1 ~
( B' U$ r9 }' M- <script type="text/javascript" charset="utf-8">
1 M* G) o; f( v9 u9 S3 B - 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>');
! |4 n i3 l" N* b - </script>
复制代码 2、代码层次的屏蔽,方法可行,但不是很人性化。0 A# q5 x% O* G5 x% G
Meta标签方法
, O7 F4 ?( I6 G* x1 t- <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码 PHP方法
1 _3 ~- [; l( O- <?php header('X-Frame-Options:Deny'); ?>
复制代码 Apache主机方法
7 |0 H, y0 h: D: j( N0 l- Header always append X-Frame-Options SAMEORIGIN
复制代码 Nginx主机方法) V! b7 M; l* a' n. N5 x9 h0 d. w
- add_header X-Frame-Options "SAMEORIGIN";
复制代码
" w0 J2 v( a; X0 d.htaccess方法
/ D, H7 F3 i2 T& |在网站根目录下的.htaccess文件中中加一句( D% [' E( G" C8 J/ ~, F
- Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码
8 `9 E% T' i# X4 @2 ]# `; lIIS方法- W. S5 t0 i! M6 V# T3 q: E- f* o6 r
在web.config文件中加- <system.webServer>
1 I ]0 `# Z/ \8 T* @4 A8 y - ...+ x, K: Z$ T0 ]1 O0 s5 w
- <httpProtocol>
4 y8 c4 u& ?: j0 |8 e - <customHeaders>' t3 o& K+ p! c* i3 F2 ]
- <add name="X-Frame-Options" value="SAMEORIGIN" />
# d' i1 v$ O2 w ~4 g - </customHeaders>
}5 _* C* a0 W' E& u - </httpProtocol>
4 P; Y) e" L+ F7 W0 q2 ]* z$ l y/ o2 } - ...) {* P4 \4 Z6 G& K5 h; {7 U7 Z& L) Z
- </system.webServer>
复制代码 & m$ H! K0 T: U# ~+ r! \
之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。
: G! F& N5 u( g9 \( F6 p4 J
9 y( x( C+ ^- k, U) o: q3、推荐解决方法。
' v# m) j$ a) M1 d' L, y* I9 y- <script language="javascript"> ( I+ T+ L6 E/ j- c( Z
- if(top != self){4 S3 s% _* c, h; K+ A6 I9 _
- location.href = "http://xp6.org/iframe.html"; ! _ O* S: |$ x& P I9 I
- top.location.href=self.location.href;
0 R) j3 k% b9 s5 H* i - } ) J2 a! Q! S: {2 S
- </script>
复制代码
0 T1 p, f7 V- G( N, n2 E将上面的代码复制到需要屏蔽页面<head>里面加载。1 x; A+ n0 h) Z
制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。
: \4 ` u' K3 ~, l原理:5 p7 m7 `& G6 I
第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。
: ]- F/ {) ?+ g/ f* N& L" I第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。
$ c! k: a& Y' N" r# w; ?目前测试这种方法没什么问题。" N/ f; E* S3 M* U l
+ {9 z5 D% E8 F& _1 S! P! k
|
|