搜索
查看: 14712|回复: 0

[网站] 如何防止自己的网页被别人iframe嵌入

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。
3 y* V! z* o2 q: @6 }+ x8 O这次讲一下如何防止自己的网页被别人iframe。4 v" s* ]8 }+ A( v% e, F
' n$ W0 S# a. H- Z" O
1、这些方法都可行,但不是太可靠。
# O2 W' v5 v5 S7 A  p4 r
  1. <script language="javascript">
    0 ^; n. w) U/ j# ~& }6 C2 V' D
  2. if( top.location != self.location) top.location.href=self.location.href;2 z2 t' d& }$ U  R0 I8 {# H4 I8 {  n. j
  3. </script>
复制代码
4 o9 t+ J8 q4 w7 m" j2 I
  1. <script language="javascript">7 w/ ~8 }$ R$ D5 U- k& T
  2. if (top.location != location) top.location.href = location.href;2 |2 S% ^; H* g' f
  3. </script>
复制代码
1 m, {# s  g& p; ~7 w$ E$ m
  1. <script language="javascript">
    & u0 F- s: a8 q0 B. s
  2. if (top.location != self.location) {top.location=self.location;}
    / f4 b4 G- G6 H
  3. </script>
复制代码
' B( ?. F8 F6 m( a/ \
  1. <script language="javascript">
    8 ]4 t+ w8 \+ F9 k! m# g
  2. if (top.frames.length!=0) top.location=self.document.location;
    ( ^1 N. B: V2 j+ _/ n6 M0 h
  3. </script>
复制代码
不可靠的原因:
5 @% w3 F6 m& }当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。
* K0 q% ]3 Y+ q5 Z) I) _3 v. }
  1. <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>4 y$ W( d  P: Z" r
  2. <script language="javascript"> / @+ P, f% }* N' K4 _) |
  3. var location="";% m2 u! @* }' [; D
  4. var navigate="";
    6 g% H5 t0 F2 J3 Q' ^
  5. frames[0].location.href="";
    7 z6 b9 k( @# V1 O' D
  6. </script>
复制代码

4 m6 d: L( f# }6 T& ~4 D
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码

, ]2 {5 l$ \# k7 `( L, U2 z0 N5 z. H1 w* U$ D& T2 g0 O4 G% S
  1. <script type="text/javascript" charset="utf-8">
      {( ~6 o6 i" x% y; j, j4 M
  2. 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>');) m$ V/ d' y$ ]2 T1 @1 Q: p! ~
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。
" Q: z8 B4 q9 v. ]1 FMeta标签方法5 p4 H2 D( j- ~6 [7 P( a
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法! i+ F7 y: V: Y! |5 P& L2 q
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法/ D5 J" e! n6 d/ u/ {9 w7 V
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法" E1 s( M7 y# E; z5 }. G
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码
( J% O) M4 W, v) F$ o9 p
.htaccess方法
1 x9 H! _# p& K5 \9 Q, A在网站根目录下的.htaccess文件中中加一句0 v: s+ N5 r2 f; R: G7 J. {/ f( P
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码
7 M" `/ _: I' |, `- N4 {
IIS方法* Z) m7 F! |0 I4 ^: @
在web.config文件中加
  1. <system.webServer>- D9 F% B, `0 |* H
  2.   .... ]2 [! }3 m* u* ]; T
  3.   <httpProtocol>
    4 c: [; r) o; s, v, S+ q
  4.     <customHeaders>; u' r6 P+ m, ?$ ]
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      
    & N2 K. W* A& b# F7 @  G  l/ v
  6.     </customHeaders>    / {! I  I. b4 {: F" x( N. x
  7.   </httpProtocol>  * `. f3 A3 D& T  e! T
  8.   ...
    % {* _2 z6 v! C0 B) L3 p
  9. </system.webServer>
复制代码
; T+ c+ k9 ~9 W% b
之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。
) _1 n* a' d- k  a7 E; N
- o: n& c4 z: R  D) @3、推荐解决方法。
2 ]2 a5 P/ ^, L9 I! e4 y$ ^$ w
  1. <script language="javascript">  3 V2 a9 T9 n7 ]2 |; G0 ?/ U) x- d
  2. if(top != self){, U& z( M7 _  _1 ?. t
  3.     location.href = "http://xp6.org/iframe.html";  
      o1 h8 r/ ]/ \! G# Z3 q
  4.     top.location.href=self.location.href;
    3 ~" ^( V$ v- I, e6 I! B
  5. }  
    . y" g2 \* W" f* y
  6. </script>
复制代码
; i( k) I' ^9 a, y* |& v
将上面的代码复制到需要屏蔽页面<head>里面加载。) G4 F! E; T' o9 y8 u6 ^
制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。2 W9 I4 m$ I2 J' e+ ]
原理:# U2 d, J$ [+ F! E3 y- D; c
第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。0 ?9 _  O' ]* Q
第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。
7 x. m. \3 \1 _# Z, ~' N目前测试这种方法没什么问题。
" S5 Y5 ?2 q8 X/ y$ v9 J$ I8 d; T+ |8 e1 y& r
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

热议作品
精华帖子排行
精彩推荐

虾皮社区,成立十年了!

站长自己也搞不懂想做个什么,反正就是一直在努力的做!

Copyright © 2007-2019 xp6.org Powered by Discuz

QQ|Archiver|手机版|小黑屋|虾皮社区 鲁公网安备 37021102000261号 |网站地图
返回顶部 返回列表