搜索
查看: 14566|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。
% R) Z4 n+ S% S' `# z+ a这次讲一下如何防止自己的网页被别人iframe。
. J( c- b2 h% L1 d1 s; `/ t/ ^2 `7 A4 Z: L& z
1、这些方法都可行,但不是太可靠。
: L8 E7 a& t- j; c9 N6 x" ?" c
  1. <script language="javascript">6 [- v/ }8 U- L
  2. if( top.location != self.location) top.location.href=self.location.href;. }5 x7 f8 S* p" o. D) V7 D9 r
  3. </script>
复制代码
' t  }& J1 \. M0 w3 m
  1. <script language="javascript">& y9 A, d& t% {- Z
  2. if (top.location != location) top.location.href = location.href;" M2 [/ \  v* \& X- p
  3. </script>
复制代码

5 [/ w* Y5 _# i7 E9 g
  1. <script language="javascript">! e1 N: b% X$ ?( |9 U4 J1 U  N
  2. if (top.location != self.location) {top.location=self.location;}( J+ |/ `% d4 ^! M2 S) H) u
  3. </script>
复制代码
0 j0 |8 m& r+ P7 K( h: m7 _
  1. <script language="javascript">
    1 N5 Z- A5 F+ x5 a* y  t" P6 G9 m4 ?
  2. if (top.frames.length!=0) top.location=self.document.location;
    7 T1 I  ^# n; I; f
  3. </script>
复制代码
不可靠的原因:
2 V. L8 p# @9 N+ c* a; P0 c当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。4 d) [0 y- {$ |( A8 }
  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>
      E" H* S1 Q  x1 X  J( H: j
  2. <script language="javascript"> 5 S; o9 _7 B8 @  G
  3. var location="";3 _& S$ T0 d( y* h+ W; @# ^, F
  4. var navigate="";
    $ f# q3 i1 G, J" t$ e# n! p4 [, _
  5. frames[0].location.href="";
    9 C3 Z" M2 e) t' I
  6. </script>
复制代码

  v  a% Q6 F/ b7 w- y% Y
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码
- z" H4 q6 v& f  L4 h( T1 ~

( B' U$ r9 }' M
  1. <script type="text/javascript" charset="utf-8">
    1 M* G) o; f( v9 u9 S3 B
  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>');
    ! |4 n  i3 l" N* b
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。0 A# q5 x% O* G5 x% G
Meta标签方法
, O7 F4 ?( I6 G* x1 t
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法
1 _3 ~- [; l( O
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法
7 |0 H, y0 h: D: j( N0 l
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法) V! b7 M; l* a' n. N5 x9 h0 d. w
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码

" w0 J2 v( a; X0 d.htaccess方法
/ D, H7 F3 i2 T& |在网站根目录下的.htaccess文件中中加一句( D% [' E( G" C8 J/ ~, F
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码

8 `9 E% T' i# X4 @2 ]# `; lIIS方法- W. S5 t0 i! M6 V# T3 q: E- f* o6 r
在web.config文件中加
  1. <system.webServer>
    1 I  ]0 `# Z/ \8 T* @4 A8 y
  2.   ...+ x, K: Z$ T0 ]1 O0 s5 w
  3.   <httpProtocol>
    4 y8 c4 u& ?: j0 |8 e
  4.     <customHeaders>' t3 o& K+ p! c* i3 F2 ]
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      
    # d' i1 v$ O2 w  ~4 g
  6.     </customHeaders>   
      }5 _* C* a0 W' E& u
  7.   </httpProtocol>  
    4 P; Y) e" L+ F7 W0 q2 ]* z$ l  y/ o2 }
  8.   ...) {* P4 \4 Z6 G& K5 h; {7 U7 Z& L) Z
  9. </system.webServer>
复制代码
& m$ H! K0 T: U# ~+ r! \
之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。
: G! F& N5 u( g9 \( F6 p4 J
9 y( x( C+ ^- k, U) o: q3、推荐解决方法。
' v# m) j$ a) M1 d' L, y* I9 y
  1. <script language="javascript">  ( I+ T+ L6 E/ j- c( Z
  2. if(top != self){4 S3 s% _* c, h; K+ A6 I9 _
  3.     location.href = "http://xp6.org/iframe.html";  ! _  O* S: |$ x& P  I9 I
  4.     top.location.href=self.location.href;
    0 R) j3 k% b9 s5 H* i
  5. }  ) J2 a! Q! S: {2 S
  6. </script>
复制代码

0 T1 p, f7 V- G( N, n2 E将上面的代码复制到需要屏蔽页面<head>里面加载。1 x; A+ n0 h) Z
制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。
: \4 `  u' K3 ~, l原理:5 p7 m7 `& G6 I
第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。
: ]- F/ {) ?+ g/ f* N& L" I第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。
$ c! k: a& Y' N" r# w; ?目前测试这种方法没什么问题。" N/ f; E* S3 M* U  l
+ {9 z5 D% E8 F& _1 S! P! k
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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