搜索
查看: 14392|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。' K, S& B3 f7 n8 B/ i0 T) A
这次讲一下如何防止自己的网页被别人iframe。
3 b& p6 W3 x; U% J  E6 O# V
9 `" G0 L9 K4 K+ b1 A1、这些方法都可行,但不是太可靠。: V: r( e3 A; |& D" U/ [) Q
  1. <script language="javascript">
    7 f/ {# l7 f& m, P
  2. if( top.location != self.location) top.location.href=self.location.href;8 [' k. O5 w; B8 `+ R
  3. </script>
复制代码
1 ^/ x) Z* e1 N6 R7 Y' S0 E- ]
  1. <script language="javascript">
    8 }7 H4 i9 P0 C. u5 t) G
  2. if (top.location != location) top.location.href = location.href;
    . d' I& Q" a: W. G0 ]1 s- l
  3. </script>
复制代码
, `) \- d2 ^# y; W( r
  1. <script language="javascript">
    ) [; v6 O+ B( z/ z
  2. if (top.location != self.location) {top.location=self.location;}1 U) X& S  t6 D
  3. </script>
复制代码

8 A; y! t4 P3 U
  1. <script language="javascript">
    . V* x* h& U5 f. P& U( {
  2. if (top.frames.length!=0) top.location=self.document.location;# b, Z8 I  h5 f' Q6 O* H
  3. </script>
复制代码
不可靠的原因:
! Q) y& k0 ^  d1 g: e7 ?) }当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。# n8 p! z1 P3 |2 l  Y8 p% o0 \" D
  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>
    & y% T, h5 ?& G  w
  2. <script language="javascript"> + G( }- H$ S; ^
  3. var location="";7 P% i9 C6 }: O5 `( S/ f  X, u3 S- z/ T
  4. var navigate="";
    ( Z) Y: ?' K- E/ S8 q0 q2 a9 G
  5. frames[0].location.href="";. d, y2 o4 d4 L8 U4 ~( _
  6. </script>
复制代码
+ }# J6 E, ?+ \
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码

1 ^" }- Q. }4 i9 S8 R% B: K+ r
6 ]) f; ~( B. L/ s
  1. <script type="text/javascript" charset="utf-8">
    0 {+ I, r7 D. _  f1 f, i# q
  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>');
    3 `! f7 i' Z0 R  ~! N
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。" S$ e0 i; r9 O( K3 x" U, A
Meta标签方法9 m& a. z. T  a' R; z
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法
- n* Y2 }; ]" D/ j( X7 y0 i3 q8 d+ y
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法+ T) D3 N& R" x2 A
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法
/ Z& x9 y+ b  D* A( ]0 y
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码
( @& t" M1 F3 t" d2 e6 k
.htaccess方法
. A! |7 c0 M. q. }5 e3 S在网站根目录下的.htaccess文件中中加一句
( X) \' N  e+ ?  D, G' F
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码

* H  @& \7 J$ d2 z" q8 qIIS方法, G) E1 H. o# I
在web.config文件中加
  1. <system.webServer>; ~$ d2 V5 `- ]: U+ q# e' s
  2.   .../ e9 _0 G/ N* l# i* W+ A) `
  3.   <httpProtocol>
    0 n, w2 O( S5 ?" @6 }/ A
  4.     <customHeaders>9 A' I2 z3 W! t' w! s# o, N
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      0 P: {6 S; `* l; V7 Q4 C
  6.     </customHeaders>    5 {: b; H% b" y8 Y) X% O# f
  7.   </httpProtocol>  2 h! j4 G; b- n2 {( f- V
  8.   ...
      ], ~' o  l+ W6 P& g; n) n! i
  9. </system.webServer>
复制代码
$ W  H# m$ G1 ]
之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。
3 j% P6 k5 y' o( p. _; }9 `) _, o2 h. _: d2 E3 }! v% X8 v- N% Q
3、推荐解决方法。* N: ]) C# n' W! P( x  s
  1. <script language="javascript">  
    - r: D8 c  {9 Q, g6 M# l
  2. if(top != self){. D( m( s3 z6 t- T& ^3 L/ q% a3 H
  3.     location.href = "http://xp6.org/iframe.html";  
    # x+ _6 v& E3 W- j) a" Y
  4.     top.location.href=self.location.href;; Y" x- ?" q% Q  f$ V
  5. }  
    ) D! K8 W$ j0 m( u" G' d* }
  6. </script>
复制代码
( H& V, Y' j5 S# H
将上面的代码复制到需要屏蔽页面<head>里面加载。
4 Q% E5 o+ l" ?+ H) ^( d! H1 n- x制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。% u/ \1 d9 F* l% p  s# L
原理:8 K6 f& I# [5 r5 Q. d/ e: _, B
第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。
- j8 y1 d+ [" @8 n8 H6 k- z第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。# s8 Y1 l1 G' v
目前测试这种方法没什么问题。/ c9 _' n+ B9 E

9 d/ ]# W3 u) v
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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