搜索
查看: 14377|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。5 D# U' Y$ c. r9 j. x. c' c
这次讲一下如何防止自己的网页被别人iframe。
  K' m8 O7 g1 X* U; e8 N+ R0 D* s1 V& A1 Y- p
1、这些方法都可行,但不是太可靠。' q8 t" ~: G6 C9 l* v. F
  1. <script language="javascript">
    ( `$ q" A5 Q/ I1 S$ c
  2. if( top.location != self.location) top.location.href=self.location.href;% `# h" L: O: L7 ?- J$ b2 T
  3. </script>
复制代码

$ m. O) ?& Y/ w! E' V
  1. <script language="javascript">6 S* `* e1 A5 y: g; S- Q6 g
  2. if (top.location != location) top.location.href = location.href;
    4 z  P* g" @& s4 y
  3. </script>
复制代码

$ _# b) w/ ?" o6 z' v, F) V
  1. <script language="javascript">7 l0 m$ \/ K. Q* M' H
  2. if (top.location != self.location) {top.location=self.location;}  w; V1 O! i5 q6 D1 O) V
  3. </script>
复制代码

; M* B1 t, Q) I* L) O  b9 I
  1. <script language="javascript">
    & n* d: Q0 B/ A3 n( F3 H( Z
  2. if (top.frames.length!=0) top.location=self.document.location;
    9 p5 H; d- a2 e  H4 {
  3. </script>
复制代码
不可靠的原因:8 B5 H! A) R) U1 v9 i# _5 c
当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。0 r; I  p# [3 o: x& b8 V4 m2 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>) ~+ d3 F! \/ z% a
  2. <script language="javascript"> $ t; M7 p- `- d# Z: l, J: h
  3. var location="";, S( U5 A$ `, `3 r/ W3 C) y
  4. var navigate="";/ ~8 J) _2 t- H) u0 X! p
  5. frames[0].location.href="";% W1 ]: c; J: ]3 _4 q" W8 N+ G
  6. </script>
复制代码
/ c; u6 W6 l0 Q5 I5 J
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码
, r: H/ Q! c3 l
" j9 ~1 o; N/ U- j
  1. <script type="text/javascript" charset="utf-8">
    " O* G4 ?2 w3 |4 c  K
  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>');8 k$ C9 |5 D, b6 g
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。& J: a9 u3 F- J) R
Meta标签方法
9 X/ c% j* I0 O0 k' {/ [' }
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法9 J9 V. Q  R: Z2 {
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法
5 `3 R: H( n0 z: R+ }; m8 w
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法" f5 [$ ^& C+ X/ j3 i
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码

' V: Y: I; T# n$ E# m.htaccess方法
4 X, |, B* }! h- `在网站根目录下的.htaccess文件中中加一句
6 R1 @# H" D+ M1 J
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码
5 H+ G" X* f' E. T/ R
IIS方法& @9 ?! B5 E+ v; Z
在web.config文件中加
  1. <system.webServer>
    % x# [7 ^1 G1 n9 R. G# W
  2.   ...9 D) g$ z# x- f4 c8 Y/ s% j
  3.   <httpProtocol># h& S6 E" l( ~- h1 s' u
  4.     <customHeaders>+ g% `' n7 K# y1 N
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      & G$ @7 e/ @. B" C0 \0 d
  6.     </customHeaders>    4 ^: q1 f! Y) U9 X6 o  K4 b# u
  7.   </httpProtocol>  
    ) ^! D# g- P$ G! M, h; f5 d# _
  8.   ...
    4 v) z. P% ?5 e4 D! a6 g( G
  9. </system.webServer>
复制代码
5 H8 L5 Q8 L% S& W5 s
之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。/ `0 k& I& J& S& m9 ^+ Z$ C
* T% W: N! j  r! z% ?' |
3、推荐解决方法。( i; b: r4 J: Q. _4 |6 _
  1. <script language="javascript">  
    , r+ q5 s0 q5 Y* r' i/ V" C& ?
  2. if(top != self){: V+ w* p5 f& W+ M! ^
  3.     location.href = "http://xp6.org/iframe.html";  9 |0 X8 L( y, U6 C1 t
  4.     top.location.href=self.location.href;
    $ b1 v; u0 ^1 j# _! E  b
  5. }  2 d7 V5 T6 f& O, m- G, D
  6. </script>
复制代码

5 l) b' l, E/ S将上面的代码复制到需要屏蔽页面<head>里面加载。, Y8 I3 G2 x# V1 s
制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。
" z$ e  X. z- X+ O# P6 ]5 f原理:' p; h6 d2 D8 p9 ^' q" S7 I
第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。
$ E2 M* A) u4 C% V, j. U) T  c, i第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。" l) s' c" K4 e" I9 d
目前测试这种方法没什么问题。
/ |# `$ r3 U) c  Q! z
- _$ o9 E# _3 y$ W( d
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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