搜索
查看: 14618|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。7 a+ y; j& p8 T: F- }
这次讲一下如何防止自己的网页被别人iframe。
9 f+ X; \* r: D9 A
( e: S, |* W0 }1、这些方法都可行,但不是太可靠。
) J0 ^/ h- I0 _9 y( K/ c$ \
  1. <script language="javascript">
    & |7 m5 l+ q7 d7 t7 ~2 z7 r
  2. if( top.location != self.location) top.location.href=self.location.href;
    1 d" K- g5 L  X- f% L
  3. </script>
复制代码

2 T3 z9 z& E3 o! z( p
  1. <script language="javascript">3 b7 E$ ]2 I6 q! }, D* n8 a4 \
  2. if (top.location != location) top.location.href = location.href;- n+ ]7 m" {. M1 c( j# N# s
  3. </script>
复制代码
8 H# a1 u% j4 Y; P+ H. u
  1. <script language="javascript">
    / C2 B5 G5 o7 W( }6 p) d3 g
  2. if (top.location != self.location) {top.location=self.location;}/ D3 Y  k! q1 R1 J: L
  3. </script>
复制代码

) U9 D. M7 v9 n# }2 k
  1. <script language="javascript">, D; g2 u/ ~! ?1 u; {( h$ h
  2. if (top.frames.length!=0) top.location=self.document.location;6 w6 r; J4 l5 v: L3 {/ _( ?
  3. </script>
复制代码
不可靠的原因:
6 {. ~6 r8 w4 r当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。
' T$ H/ z' _7 Z
  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>
    ' _3 t6 X. N# R4 h" A" g1 e
  2. <script language="javascript">
    * V: |- n8 X2 ^' B2 w
  3. var location="";
    1 l( p9 a7 A' [# ~% d- ]
  4. var navigate="";% p. b9 V3 F* ]1 `/ J  R
  5. frames[0].location.href="";
    + U, Z  u" v6 D
  6. </script>
复制代码

' N9 c2 \7 d. t, k
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码
" \! V& g4 J$ n
8 X& u* p. ?; e8 Q' q
  1. <script type="text/javascript" charset="utf-8"># m1 C/ B3 b8 _/ k- g
  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>');. K& N" r  F0 d- m6 g0 I
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。
/ J/ v0 T% ]5 ?5 m' z) O8 iMeta标签方法
% v3 u3 r! ~5 Q2 w# X* K1 C( j
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法% R- j4 E+ w7 h9 n
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法/ R1 s( k: d& m9 _8 A# B4 V* T" x
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法  U9 J0 s; R2 G  U* y( f
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码

9 a/ C$ o  j3 R2 G2 p6 g.htaccess方法( w5 s9 e9 U+ c( D: J% t3 u
在网站根目录下的.htaccess文件中中加一句
4 g1 s/ _/ R  ^4 H8 }) M6 i8 v; F6 Z
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码

; G1 ~" R; z: ]; r( o: ]IIS方法
! E# I0 `( h2 t; u在web.config文件中加
  1. <system.webServer>% {( T8 H  u% u* H
  2.   ...0 U2 t6 P" c) n
  3.   <httpProtocol>2 l& h( x. r; j6 j) ]0 h
  4.     <customHeaders>3 I1 f# Y$ b" }: A
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      7 I5 f7 r# H; a
  6.     </customHeaders>    5 T4 @% E  V' ~* z2 [+ Y6 \
  7.   </httpProtocol>  
    7 ]4 ]& V2 l+ o* ]- r+ G
  8.   ...6 f/ g1 ]' }& ?; `  D- H6 e6 c( N& f( T
  9. </system.webServer>
复制代码
9 }- Q  b+ o, D2 E2 Q
之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。
2 Z, J' k/ Z- C* u: [0 x5 L! S* _& {+ D3 }
3、推荐解决方法。
' v3 h4 p/ T4 O2 Y4 F1 }/ m' M
  1. <script language="javascript">  
    1 b' S0 y. o! M& `5 s% u- I( I
  2. if(top != self){' b- ~( [* X9 J+ F9 p
  3.     location.href = "http://xp6.org/iframe.html";  
    ; g9 b: n, \* X- d
  4.     top.location.href=self.location.href;- n  Q5 q3 o# J5 E
  5. }  
    # |8 I9 p  n/ R" S* v$ E
  6. </script>
复制代码

- t6 a! M6 F3 d' ^1 h将上面的代码复制到需要屏蔽页面<head>里面加载。
% \% s* g+ ~* H# K制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。  C; w; C* O: N3 X
原理:
9 a9 p0 l, R. z2 P- V  y5 i第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。. i7 z1 j0 n2 ^0 z% n  j+ x4 @1 E
第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。; n1 g6 i3 P( d5 V. v; o- i
目前测试这种方法没什么问题。/ H$ {: ^4 q/ d

, v  \% ?$ i* H$ l
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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