搜索
查看: 14694|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。/ `& Y8 T/ X) C$ j: L2 @8 C! \0 i
这次讲一下如何防止自己的网页被别人iframe。( ~: i' h9 v- Z: p; O/ q

) ]5 }# i4 _& W1、这些方法都可行,但不是太可靠。
; X3 t% O& b/ ^
  1. <script language="javascript">
    & V) s( e( C; C2 }
  2. if( top.location != self.location) top.location.href=self.location.href;
    ( M& T6 g) E0 @& k
  3. </script>
复制代码
+ _6 u$ W& f; S, e" b7 W
  1. <script language="javascript">4 d! J) }7 x$ a- @$ u
  2. if (top.location != location) top.location.href = location.href;
    - n8 ?0 J1 W( V* v  v  A
  3. </script>
复制代码
. P  T" S6 h5 Q+ L
  1. <script language="javascript">4 E- c* o; {- `! |* a
  2. if (top.location != self.location) {top.location=self.location;}+ B) e/ T' R5 P* e' Z5 F' A. Q# E. G. z
  3. </script>
复制代码
. F$ P3 Y6 C4 j* N: A/ {1 V
  1. <script language="javascript">8 R! |+ ~; X+ r" N
  2. if (top.frames.length!=0) top.location=self.document.location;
      |; _4 C8 T( M" q% p4 U
  3. </script>
复制代码
不可靠的原因:
8 Q  n3 A+ H$ u; p9 @1 j* A, _当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。
7 X5 m9 t! H. L- ?' k
  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>! r# K: x! N- a$ M
  2. <script language="javascript"> % s5 t3 C; ~' p$ i. Q$ Z
  3. var location="";
    $ g6 P; J0 [; P# p4 V
  4. var navigate="";
    3 {9 ^& I3 [2 H1 w  F/ |
  5. frames[0].location.href="";
    7 t" x8 h4 }: N! ?' ~) x
  6. </script>
复制代码

6 c, ~* y! f+ Z
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码

- C) O# |! Q7 Q% l  Z2 `# |: m, J% O: l8 j
  1. <script type="text/javascript" charset="utf-8">
    " b) z% w; W8 [2 L
  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>');
    1 F7 }' n# p" F4 O) D3 M
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。1 H; I8 k- s2 [& ?0 `0 F
Meta标签方法/ i/ B: O" ]4 r$ d, P  e# m
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法
, K! P% }; Z) I; n
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法) F1 z! ]( P, O  z
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法0 _3 i- D$ T: H. L5 h4 D
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码
( ~7 L- V( H" g# W1 ~! J9 ~
.htaccess方法: x. f" j$ F! m; m9 \) l& `
在网站根目录下的.htaccess文件中中加一句) V3 Q$ m) d) Y5 V  D
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码
6 K# f" D! t- L" l
IIS方法
7 }) ~' j& k5 L. i" O, P在web.config文件中加
  1. <system.webServer>6 H# l! E  ~4 {( v
  2.   ...
    # `: I. r5 v; C/ {1 Y, }
  3.   <httpProtocol>( u# U( Q: p! A- B
  4.     <customHeaders>9 x- _) [5 ~' k) x. L
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      
    2 T# ?$ ?! z1 x+ W8 ~/ b# c
  6.     </customHeaders>    , H, P! l+ n) t5 I3 ?# {: F
  7.   </httpProtocol>  
    3 D6 c$ T# e) Y+ W
  8.   .... n) D" f2 P* W/ Z
  9. </system.webServer>
复制代码
6 e* J. D. y  ~& |/ @6 S
之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。
: ^+ ?, E2 C, C8 u, D. E2 N/ b7 t, [. Q6 c8 G
3、推荐解决方法。' Z9 K7 `4 n9 O' d8 h# ~8 Q) d9 ~
  1. <script language="javascript">  
    % _0 {! M+ f7 Z) w+ H
  2. if(top != self){$ F9 w1 k: o9 Q  N
  3.     location.href = "http://xp6.org/iframe.html";  4 S$ N) |9 s$ ~: [7 ?
  4.     top.location.href=self.location.href;( h9 t  K; U0 |2 f1 V  S9 e
  5. }  
    . U5 e* x  ?' i5 |6 g# G" C
  6. </script>
复制代码

! n+ X" h: e9 b, S将上面的代码复制到需要屏蔽页面<head>里面加载。, v2 _$ n5 T2 F- Q4 X6 T
制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。: S" P4 a. I  Y, H
原理:  a, n  E& q3 n- F% d# X
第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。
5 a8 C6 ~, ?0 z% o% F& f第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。- f; P/ R! }& p9 g0 z9 R7 b2 ^7 m/ H
目前测试这种方法没什么问题。! f1 A9 L# _/ _# o6 p& |( j9 B1 ]; n0 n
5 s8 c/ j9 r9 |& P
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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