搜索
查看: 14586|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。1 A: W3 @) J4 \
这次讲一下如何防止自己的网页被别人iframe。
  j# g. v* [( a8 J2 E2 P8 u5 ?1 u% o5 h" H- _+ |+ {
1、这些方法都可行,但不是太可靠。4 u& W2 z; `. n+ T
  1. <script language="javascript">
    ( y/ |; L1 G6 {5 a: W. n
  2. if( top.location != self.location) top.location.href=self.location.href;
    2 p- k5 i4 V' ~$ i
  3. </script>
复制代码

' l& c& c9 e# ?+ h2 B
  1. <script language="javascript">
    0 i: Q' [: ?- K" D# Z
  2. if (top.location != location) top.location.href = location.href;
    ' \5 g, R  q' y. e
  3. </script>
复制代码

; Q- q0 R+ U) R3 S. x/ \
  1. <script language="javascript">( d" \# Q! c1 E9 o& v8 d* p
  2. if (top.location != self.location) {top.location=self.location;}5 W# a8 A5 U' ]1 n6 |/ B
  3. </script>
复制代码

. r. }2 A$ i; u2 x1 \, B1 K7 G
  1. <script language="javascript">
    / Q" o2 v. x5 o, E4 w& Z. V: F
  2. if (top.frames.length!=0) top.location=self.document.location;
    + a% I# c3 c6 v; I" r8 D
  3. </script>
复制代码
不可靠的原因:- a+ l+ J+ t7 l; G! g
当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。- J; A; L6 _3 Q3 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>/ N/ f& M" E" r) V3 p; n3 d
  2. <script language="javascript">
    3 J7 \% @9 }/ {# T' W
  3. var location="";/ `' O+ q- T8 b5 n6 ]0 X
  4. var navigate="";2 i( g3 m- f5 X) H1 ?, c' ?5 D
  5. frames[0].location.href="";
    ; t& u1 L0 [& Y) _0 O" N8 c) B
  6. </script>
复制代码

' w0 }1 \1 S7 D% ?
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码

& C: [1 h8 c7 i5 y; G$ i# N# U( _$ V
  1. <script type="text/javascript" charset="utf-8">  C) {( d+ \  g4 T& G9 c
  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>');- z( q& l. \% {- N; p) E
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。
8 z6 w5 y6 W1 O7 [4 s3 Q' j% X3 ^Meta标签方法
7 d' M5 F, _" S( ?9 A! U4 s8 `& e, [2 _
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法* ?$ U0 L% E' d/ y
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法
: W9 x4 r8 \, Q
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法8 r: _, M% j: u! f# d+ Y! g
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码

  H# r- s  J  X, V9 S% e  o.htaccess方法
9 @- E9 w4 m( t+ y- |2 P+ Z5 q在网站根目录下的.htaccess文件中中加一句" V# _$ c8 d2 W3 W
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码
7 f: l, O& D; h0 o! w& X* @. }
IIS方法- ~; u+ x' A, |8 t% x0 c
在web.config文件中加
  1. <system.webServer>
    " b! z0 q- O# F3 t+ P; s& ]: r  b$ z
  2.   ...
    6 }. ~6 H$ s" h5 v4 X; V3 P
  3.   <httpProtocol>
    9 t; ?. k0 K2 H5 h8 v3 r
  4.     <customHeaders>
    3 W) f  \! V  `! d/ p- T7 t
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      
    ! z3 S3 p: E8 M2 K  R7 s$ a3 V
  6.     </customHeaders>    3 d0 D" B: j& z- B# a% m
  7.   </httpProtocol>  . Q( g1 D5 B4 W0 k& u% ]
  8.   ...
    / T( W, [3 k# y; y$ \! r2 l
  9. </system.webServer>
复制代码

1 p0 S/ W- e/ k+ B之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。; [7 O; Z  O9 n& e4 g
) v% p/ ~( W* ~( }" F
3、推荐解决方法。
- y: |9 R9 ]7 B" U8 ?+ Q
  1. <script language="javascript">  
    + l: u# B# e, L( f, b
  2. if(top != self){$ I$ j5 O5 x1 c' j% I! E
  3.     location.href = "http://xp6.org/iframe.html";    L9 C2 D$ v* `$ q
  4.     top.location.href=self.location.href;, @" d3 f$ h8 D
  5. }  3 ~" ?" F) s5 Y7 m* n3 `! @
  6. </script>
复制代码

8 \. h, {/ a8 x6 [7 X将上面的代码复制到需要屏蔽页面<head>里面加载。
9 R% i0 u! r4 @" u) C制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。
! m2 l1 B8 `, l  _& c原理:4 N: U0 u' W# \( e! U9 Y, L
第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。' m3 `" o7 Z6 b/ o
第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。
) K  M! X1 M3 \; k1 d, i; s目前测试这种方法没什么问题。9 t! ?  t1 B4 s

" L5 b- Z8 G! C- [* I: F
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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