搜索
查看: 14493|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。( a! L' H0 o  C& k; W5 _% l
这次讲一下如何防止自己的网页被别人iframe。
) \* S) G: ?) g* D2 C/ Y) E5 V5 O
  _; m! J1 G; H9 f7 q1、这些方法都可行,但不是太可靠。1 y! q6 ^& y5 b% V" g
  1. <script language="javascript">
    3 L7 Z. x! B) }1 l5 B4 T3 n
  2. if( top.location != self.location) top.location.href=self.location.href;
    & p3 W0 I% [6 y, Q
  3. </script>
复制代码

+ w3 l' d/ z! k) P
  1. <script language="javascript">
    ( J4 K* Q6 ^* t" B! F- F
  2. if (top.location != location) top.location.href = location.href;2 I2 W2 U5 }* P* D, q3 \8 l
  3. </script>
复制代码

! v" J) M2 D5 g. O$ x  g
  1. <script language="javascript">
      P# K- `* \: k. G
  2. if (top.location != self.location) {top.location=self.location;}* c; v9 y9 ~3 u! t
  3. </script>
复制代码
  T/ u. v& c6 H
  1. <script language="javascript">; d# F& q& d% ]  Y) ^0 e
  2. if (top.frames.length!=0) top.location=self.document.location;
    2 ~# H5 ?! S, e7 I, ~
  3. </script>
复制代码
不可靠的原因:! q; C; `" T. `) r/ y
当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。
  }: Y& F) W. I$ S/ 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>
    # x3 N- f" N# N5 S0 T  R
  2. <script language="javascript">
    / X$ C8 E; r) y% F  V. r0 ?3 s
  3. var location="";& N" @8 F% L3 j5 c  v
  4. var navigate="";
      g/ I. _7 @" D8 {6 Z
  5. frames[0].location.href="";
    $ \5 v9 S8 P# [6 ~- Y+ k! o
  6. </script>
复制代码
/ |' N9 w. D6 U
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码
4 |! k3 n* Q& Y8 ]/ y% H; V. @
$ m: [" H( I+ }$ W
  1. <script type="text/javascript" charset="utf-8">, Q/ y( C2 R0 F2 F3 L$ Q" P
  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>');
    / a$ h% s6 X+ {# `1 b3 F: f
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。: M$ Z! D$ c6 [0 L) w# J9 ]; A
Meta标签方法9 B. Y/ A. d3 R0 y
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法( g( S' ^3 G1 m7 u8 D9 m( k# P
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法
  n* t% S6 [) r0 P
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法3 O. Q. {: m, `0 |
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码

! I$ {9 ]; h; H.htaccess方法
7 V2 ]/ K: H4 d; y( {) {6 Z: T在网站根目录下的.htaccess文件中中加一句
; w2 [8 a; l2 k( n. A
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码

' }2 Y1 U$ [, p! `IIS方法
) }* u/ m( |' `6 b* \3 M* l在web.config文件中加
  1. <system.webServer>
    0 m; f' s1 d% d9 }4 G, o! y& x
  2.   ...% E* `' p6 C% z* V
  3.   <httpProtocol>3 T  s& C' v5 r
  4.     <customHeaders>7 \$ p1 ?1 q: f5 J  H5 w# r
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      ( C1 d# F7 z( }% |# W
  6.     </customHeaders>   
    ! f3 v( r* y8 b) Y' }
  7.   </httpProtocol>  7 }- ]) ?3 V* w6 F) |
  8.   ...
    & p9 A& {' y; H3 s
  9. </system.webServer>
复制代码

1 o& B: R) y1 [( D4 ?& _( A之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。
+ W- p$ j5 g0 @/ k% ~2 C4 x; H( f# Q; @: S+ F
3、推荐解决方法。
( a% {# N3 x9 Z
  1. <script language="javascript">  7 W8 r  q6 {2 m. ], e& F% v
  2. if(top != self){
    9 w. _$ u; A' j8 k8 j0 L$ n1 f7 Z
  3.     location.href = "http://xp6.org/iframe.html";  ! ?9 k7 V# w% L1 \
  4.     top.location.href=self.location.href;
    + w: J6 |7 q2 [# x" S
  5. }  
    * q. @  w" k( j$ Z' b
  6. </script>
复制代码
9 F2 x! Z  s6 Q: Z
将上面的代码复制到需要屏蔽页面<head>里面加载。
% H$ {( ~! z/ r! W; W# @制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。0 l9 l) {3 x4 l! j- w* K& L6 s  S
原理:
2 F3 ^2 \- r: \3 N第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。
$ G$ h, k0 a& ~9 f2 q第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。
( u/ _% L+ ]6 v/ v目前测试这种方法没什么问题。) D) f& j9 S; |

$ `5 p3 e( C) V: g
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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