|
|
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。5 T9 o) S% H2 {% M6 k7 w" ?3 {" M
这次讲一下如何防止自己的网页被别人iframe。
8 f/ \: ]! _* |5 d4 O9 s
8 X3 x5 m/ w z& n3 Y5 U4 h! l- B* R1、这些方法都可行,但不是太可靠。% h' i( m. }$ `& r" U6 S
- <script language="javascript">
# E' p7 l5 ?1 E z- h - if( top.location != self.location) top.location.href=self.location.href;
- D p4 U" L6 x; i( P - </script>
复制代码 或. k v/ I, @9 ~
- <script language="javascript">9 u) D/ ?0 W3 u7 p" Q' x$ f
- if (top.location != location) top.location.href = location.href;# u( I3 J( E7 q w, o0 y+ i
- </script>
复制代码 或4 | Y z4 ~! q0 j5 q" u
- <script language="javascript">
+ K( d7 {6 O' j7 _7 _ - if (top.location != self.location) {top.location=self.location;}
) Q7 J2 U& ~- c; \ - </script>
复制代码 或3 ]" y% ?: c9 Q+ s" D: p0 O+ @
- <script language="javascript">
8 D' m$ X# k S/ e2 A - if (top.frames.length!=0) top.location=self.document.location;# f7 {2 `5 H- k4 E
- </script>
复制代码 不可靠的原因:
3 r; v! {0 B9 @ o当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。
8 i( ?5 _9 i* _/ n: S: b- <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>
, k- [1 J9 {! b - <script language="javascript">
8 b! T: p/ V6 a- Y9 L' f- e - var location="";
* g$ G' k% F# q- ~1 I' w& D - var navigate="";
5 ]% {7 Q, T( y( [; ?3 W3 d$ p - frames[0].location.href="";, Z& y2 t6 W# v% M G
- </script>
复制代码 或
5 ]# c( L& W1 B0 E1 a j- <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码 或
/ U$ w$ ^4 \( I4 @0 E* ^" p# b# Q+ n. p
- <script type="text/javascript" charset="utf-8">
& T' m2 c4 J$ F9 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>');: i7 g4 |1 V- Z8 Q1 b% o& \ z
- </script>
复制代码 2、代码层次的屏蔽,方法可行,但不是很人性化。5 z+ g& O+ D5 h; A1 K3 ]
Meta标签方法) t: y. u4 \* R' P) C, l3 t/ ?- B
- <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码 PHP方法
" A3 n" A$ s+ u- <?php header('X-Frame-Options:Deny'); ?>
复制代码 Apache主机方法
7 s0 N' c4 r' m Q4 e( M- Header always append X-Frame-Options SAMEORIGIN
复制代码 Nginx主机方法' n1 c' L* A! |+ Q! Z
- add_header X-Frame-Options "SAMEORIGIN";
复制代码
, [3 D+ ~, j( G5 ]7 P.htaccess方法
& B3 c9 z: s. {在网站根目录下的.htaccess文件中中加一句) R$ q' i" q; w3 g4 }# y
- Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码
4 n$ v- H4 Q+ m) T9 d# d. }IIS方法' Q# [; S d1 L: _1 f. ?
在web.config文件中加- <system.webServer>8 E- f( n J* L9 b
- ...
5 a* W1 f# X5 t% _3 n - <httpProtocol>* m5 z, L# _& W3 I9 l
- <customHeaders> s' w) ]- ~( w0 T' J1 B
- <add name="X-Frame-Options" value="SAMEORIGIN" /> 2 M& q+ G0 e: l& m- y$ b3 x
- </customHeaders>
$ T7 ^4 e( K: y& r& Q - </httpProtocol>
) }/ Z5 f# C% c: @" M$ w - ...; E: t: a0 M4 \
- </system.webServer>
复制代码
6 D3 _. ~/ z% s% I% f) u, H之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。# M4 b8 y% l# r+ R8 u3 O( [( X3 S
( L, E7 x7 f w7 p N, n# X3、推荐解决方法。/ s$ m! q6 [5 ?/ O
- <script language="javascript">
- \9 g$ S9 i; P2 t# I - if(top != self){3 @8 ]9 } y6 O1 a0 A7 s- |
- location.href = "http://xp6.org/iframe.html";
: r7 R' Z% L4 m' a: U - top.location.href=self.location.href;% d( y8 X L& f' D
- }
6 U* C$ F7 k3 e3 r/ l - </script>
复制代码
' L" ^, i, J" ~; d( x3 k将上面的代码复制到需要屏蔽页面<head>里面加载。6 q: I$ s' i2 l$ g7 @$ M
制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。, u! Z2 |# X* N2 U9 q
原理:- X- ^6 ?8 E3 [
第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。
5 k! [9 u2 m7 l第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。
- Y& D; ~' j" a3 `, s' J" Z目前测试这种方法没什么问题。
1 d) w4 ~. e1 @: U2 s6 R6 d! U% n0 d9 _+ Z9 C7 g- K& r
|
|