搜索
查看: 14451|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。
* z" p( j, y5 B( f- u8 I9 q这次讲一下如何防止自己的网页被别人iframe。; v, x- T* w" z, G
" U& e: t' S) B, A' a
1、这些方法都可行,但不是太可靠。1 K, ^1 Z' \7 F" z- Z
  1. <script language="javascript">
    7 ?1 N* Q) T4 n  C
  2. if( top.location != self.location) top.location.href=self.location.href;
    5 J6 y3 G6 d# Q+ _$ d) d* G' H  k  @
  3. </script>
复制代码
; E* \9 q6 T9 L
  1. <script language="javascript">
    4 F! j* E4 ~, J* a" q+ u
  2. if (top.location != location) top.location.href = location.href;
    8 W8 Y$ S: }5 v" Z* h
  3. </script>
复制代码

; ?1 q8 R1 m- a; Y/ [1 d; t$ \
  1. <script language="javascript">( J8 g5 `( R- h$ q1 |5 }$ K) x
  2. if (top.location != self.location) {top.location=self.location;}
    1 G, I! @( g! x- f7 v
  3. </script>
复制代码

3 G( J) n9 e4 p4 u6 E9 N) L7 J
  1. <script language="javascript">
    6 d; {6 u: M  L2 R
  2. if (top.frames.length!=0) top.location=self.document.location;
    + U8 k8 Q) q* G- z. c' e/ Y% C
  3. </script>
复制代码
不可靠的原因:) i& T2 V% Z- N$ q0 n
当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。2 D9 G2 k2 q1 ^$ k0 _
  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>
    / f. R1 J% W) R( U- H8 \  u
  2. <script language="javascript">
    $ G  X  _! |+ O4 I2 E! |. w$ y0 A
  3. var location="";  \( p% ^# J' F, J$ Q, K# D1 X: w
  4. var navigate="";
    ) A6 [4 P, ?! Z8 v( `8 d
  5. frames[0].location.href="";# D8 |! g; _6 L7 a3 z
  6. </script>
复制代码

1 w$ y8 v+ G4 Y$ A: h
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码

& x8 T9 V# p7 Y9 T; i! G  @: K/ i) O- [2 u  h: c
  1. <script type="text/javascript" charset="utf-8">3 w9 ?& d, s4 Y4 Z  \# t3 B2 T9 k2 w
  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>');" i& [6 G9 k9 u/ C
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。
/ y% z4 ~( T& u# IMeta标签方法
6 |4 \% }. |6 ]! f$ }
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法% ]. Y3 M0 l2 Z+ X! i) M
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法
# B9 U9 `4 Y* O" @9 r
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法1 m/ C$ T/ V$ F$ V3 x+ ~
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码
" Z" U" F) f" u: {6 }
.htaccess方法5 A" m/ T" g& c  }8 x
在网站根目录下的.htaccess文件中中加一句% A$ L. J' ?6 q- T; r1 g% o2 \
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码
) l% B9 [) B, v9 [! @2 z
IIS方法
1 {8 A% B' r1 m& I0 L4 y6 w+ `在web.config文件中加
  1. <system.webServer># E6 z1 p& \7 o5 w
  2.   ...# `" C+ H, M9 F9 `4 u6 M
  3.   <httpProtocol>5 Y' O* U% B3 S  L1 H
  4.     <customHeaders>. Z& a* o2 _, X' a4 i
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      0 {5 m% X  R$ j1 O
  6.     </customHeaders>    ! W+ Y' b& Q9 J3 s5 e! H9 \
  7.   </httpProtocol>  
    5 B$ }# M; u5 x& h, H7 N
  8.   ...
    2 V7 W" Y$ ?* R
  9. </system.webServer>
复制代码

0 T% e  B- ^6 K之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。' [- ~! v8 H3 n, ?+ _% p3 i

+ h1 B. o  l6 l, e8 t: ^9 |3、推荐解决方法。
# [% w# r* J' V! Y! ?9 a2 M
  1. <script language="javascript">  4 x8 x' ?' e7 V& ?5 h
  2. if(top != self){' r9 N  _9 H9 `7 V! M6 D% e# X* K
  3.     location.href = "http://xp6.org/iframe.html";  - t3 X, j' w$ c3 H4 `
  4.     top.location.href=self.location.href;
    : M. v5 E4 F7 h2 J+ ~5 Q) u  |
  5. }  
    % |% k9 f7 ?: n0 \4 W6 @' u
  6. </script>
复制代码
$ x  c$ h9 Q  G0 C8 Q/ E
将上面的代码复制到需要屏蔽页面<head>里面加载。
" H# h- c9 ~! L) x; d制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。
. N$ L* v8 j- Y0 O8 r原理:4 }- ~! r( O" B3 |; W/ p0 ?8 y
第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。" i9 p* O4 n1 t6 b* F8 Z" z6 N' y- z/ C+ b
第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。
* T) M* |* K4 {9 m目前测试这种方法没什么问题。7 v& d! P0 l7 i9 M3 ?

# s( ]6 u1 E2 \/ a$ ~1 `
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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