|
|
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。- H/ Q3 B+ a( w- }1 q2 ]* G
这次讲一下如何防止自己的网页被别人iframe。
0 o/ |' ], N7 m4 M2 A# W' ?$ b5 q+ O* {" }; b8 K
1、这些方法都可行,但不是太可靠。
) a0 S: v0 H3 d/ \/ J; y# g+ }- <script language="javascript">) r8 b) u# w! E' N! i! \
- if( top.location != self.location) top.location.href=self.location.href;
. I5 j2 L4 Z, q0 K6 H' t) M - </script>
复制代码 或
+ h) `. g1 v0 r- <script language="javascript">0 f( L8 ?- B B. ~) F# |
- if (top.location != location) top.location.href = location.href;
" j/ O, G" R# Y3 L5 Y - </script>
复制代码 或
! E9 g) m9 N( l- <script language="javascript">
' @4 l& V, k* G @$ C - if (top.location != self.location) {top.location=self.location;}
; F, d r' |$ @! G' p - </script>
复制代码 或# k6 Q. I: k* f7 u0 l
- <script language="javascript">3 N" H1 _. j- L, @" p L
- if (top.frames.length!=0) top.location=self.document.location;
, [3 t+ \/ u9 W5 E - </script>
复制代码 不可靠的原因:, X) D* }- U1 _5 M( P+ U
当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。" f; U7 x0 G: N3 g% R3 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>
& g: @- P3 O0 R - <script language="javascript">
6 y5 K1 `5 C {! @ - var location="";
2 q& p& R! B/ t5 a( o0 l - var navigate="";, }8 [" P& q: O
- frames[0].location.href="";
9 b8 p" I' v; R' |0 z/ x" J - </script>
复制代码 或8 v7 `5 [. n+ q: _! I
- <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码 或
8 o. J+ ?4 ^3 W! N3 ^- d$ q& J" E5 F3 g, I
- <script type="text/javascript" charset="utf-8">) a6 E$ v% ^2 Y* Z" r* w. j
- 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>');8 {. `0 ]( [6 P
- </script>
复制代码 2、代码层次的屏蔽,方法可行,但不是很人性化。
& f" M4 y" j# b7 j2 ^Meta标签方法; T" L6 H) o3 @4 z. }* y
- <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码 PHP方法3 y: i( \3 S+ m
- <?php header('X-Frame-Options:Deny'); ?>
复制代码 Apache主机方法
4 n6 t, @* ?: M! A- Header always append X-Frame-Options SAMEORIGIN
复制代码 Nginx主机方法
4 e! L @) o4 A3 R8 i& O- add_header X-Frame-Options "SAMEORIGIN";
复制代码 0 F0 S" H9 n D
.htaccess方法
% |' A H0 y7 l* @2 W4 d在网站根目录下的.htaccess文件中中加一句& f& W1 l8 P" w4 S8 q4 r
- Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码
8 q- \% i5 v4 U) q. j3 bIIS方法7 ~$ r/ W' R+ T0 e5 {; c
在web.config文件中加- <system.webServer>3 x p& z' F2 R
- ...
9 w* q" q! V( [) w) L) X - <httpProtocol>
, g T* j; j( Y; F V: Q$ X% Q - <customHeaders>! U' r1 [2 b; Q; f
- <add name="X-Frame-Options" value="SAMEORIGIN" /> 3 l0 p4 j! g+ K9 K
- </customHeaders> ; t" u+ g# a$ p+ r2 R) U
- </httpProtocol> 6 K' a6 D$ R( \6 p* t
- ...* D' K) F: M0 C+ E& x" F
- </system.webServer>
复制代码 " M: y, }$ D' d" G5 X# Z9 A
之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。
! q: j$ T# v4 \4 o- R$ }' ~& c; E$ `4 E7 @: @3 u
3、推荐解决方法。' O) f- M2 Y; s% v) X' d
- <script language="javascript"> / m4 O# s; q! h8 h" R
- if(top != self){3 S# h1 G% {4 x- x6 e+ g6 s
- location.href = "http://xp6.org/iframe.html"; % c/ G$ |/ f% C" |( r: k( {
- top.location.href=self.location.href;9 ]9 d3 Z2 s* g1 f, y, O- t$ X6 c
- } : }- o! W& G) K
- </script>
复制代码
* T# X, N7 F. K8 {! w$ z& B: q9 R将上面的代码复制到需要屏蔽页面<head>里面加载。
2 f% B4 n$ ?+ M制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。
+ B! G! s; l& { K原理:
$ \' I5 X' M' [* W第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。7 d; j% k5 k" i, u# y- w
第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。4 s. W( f" A* o5 P$ f+ `
目前测试这种方法没什么问题。$ I+ m. w$ p; A# Y
2 E; i8 `; e2 y; e. B9 @
|
|