搜索
查看: 14607|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。8 y2 r  S& h1 V' d& E0 {
这次讲一下如何防止自己的网页被别人iframe。* C* r6 {$ Y/ y  N: \6 Y

/ S/ p: _- y- L' c1、这些方法都可行,但不是太可靠。
4 A6 [! @/ u% R' \
  1. <script language="javascript">
    4 [$ u$ Q  s6 N# I# Y. i
  2. if( top.location != self.location) top.location.href=self.location.href;  R1 S# b  k5 N$ n- W2 p0 T
  3. </script>
复制代码
$ @' u- F1 l* }# n" W
  1. <script language="javascript">
    ! @1 D& F4 L8 R+ E3 J
  2. if (top.location != location) top.location.href = location.href;$ P" a) Y8 p3 i, Y$ x* k
  3. </script>
复制代码
8 G6 R; \$ {' }
  1. <script language="javascript">
    & E7 b5 N* S' G" s& w
  2. if (top.location != self.location) {top.location=self.location;}
    9 @; W# l' M' m) \, T& n, J
  3. </script>
复制代码
/ z; d  a( r* ]: x0 U! g+ z
  1. <script language="javascript">
    1 T# o, i. Z9 x4 [  k( W/ {5 u: l, i
  2. if (top.frames.length!=0) top.location=self.document.location;
    ' e) ?2 c3 Z4 C
  3. </script>
复制代码
不可靠的原因:
2 C0 u: l5 e' m8 a( j  [6 i当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。  R- J" x  C5 x0 j6 e
  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>
    6 Q) i- C9 U. I7 j0 W* c
  2. <script language="javascript">
    ; a9 x1 D2 d0 f7 I# P4 c
  3. var location="";3 B$ Y0 N- t4 {6 L7 N3 E
  4. var navigate="";( [1 U. [; S; ^4 J
  5. frames[0].location.href="";
    : d* i- t9 E0 P: o8 O2 m' b
  6. </script>
复制代码

7 H; k( T5 H& w3 W: x
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码

  H9 s: H+ z( i7 \$ A( s2 G8 K4 N9 T5 T" d
  1. <script type="text/javascript" charset="utf-8">4 R  n: h& S  J
  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>');0 T5 z7 Y! ~  H* |8 ?
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。
: ?4 O( z% L2 b% tMeta标签方法+ q' V& J2 W9 b' ]! d' B+ E6 G
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法6 J. L0 M. E' \5 G: k; ?
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法
4 m; D) ~$ w: h, |# Q5 R7 c
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法6 N5 F  o+ A3 l8 G
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码
3 O% h  C$ {1 m4 c. u  o
.htaccess方法
& A" d- e5 E8 b; n在网站根目录下的.htaccess文件中中加一句
! U# _+ o9 T; Z) |! e4 R
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码
0 P5 @: `) K  q1 n
IIS方法
! t- z; I" q5 ?. J. ]在web.config文件中加
  1. <system.webServer>0 P# Q% P7 a$ G6 E7 I
  2.   ...
    ) Z  }8 ]7 O+ `3 T! U
  3.   <httpProtocol>2 ]( o$ u8 o! `' k" z4 ^- ?
  4.     <customHeaders>, z# \3 e* r% ?7 G1 G
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      
    , Z6 l; _0 E1 O) b: _$ m5 F
  6.     </customHeaders>    & J% S1 @& J& J) ]( N* J  O
  7.   </httpProtocol>  
      ^& L3 d( g; v7 o* A6 x0 ?3 |
  8.   ...% i' K0 w" ]4 U8 i) D8 b1 I8 l6 s
  9. </system.webServer>
复制代码
8 a! v. Q3 a  ]" n* X7 T$ P9 S
之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。4 O" w$ z0 @& W+ h" B$ f& G
  i- J: ?7 A7 C" W3 k& l+ e
3、推荐解决方法。7 R6 n3 D1 N1 d$ b5 L/ a0 v8 _
  1. <script language="javascript">  
    , ~) i; Q8 {* @$ E* [
  2. if(top != self){
    3 Q8 R7 O$ o% U& _( i
  3.     location.href = "http://xp6.org/iframe.html";  1 |5 s5 s: k2 V" G9 ?* {* V. Q
  4.     top.location.href=self.location.href;7 j4 u" G: v2 \0 k$ R
  5. }  % k4 R& X. Z9 g: C; i
  6. </script>
复制代码
; l5 c& Q7 V7 |5 {4 x' K. t! a
将上面的代码复制到需要屏蔽页面<head>里面加载。, g! F" m- s0 k( x6 Z1 ^. |
制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。: a# ~# s$ N" ~* q
原理:3 z& l' \3 \0 {  A2 b+ V4 b
第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。
# N: x' C: R8 O/ h- `3 O' h+ O第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。; D/ X5 b" u4 ^8 c% P
目前测试这种方法没什么问题。
+ j: W; l: T2 H
6 `) m3 m: c' L, m7 p' U$ f8 X
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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