搜索
查看: 14653|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。  C+ g. h# @, k4 m' d! {6 D
这次讲一下如何防止自己的网页被别人iframe。
4 R0 |4 K5 |6 K/ \+ \+ @9 L! E
1、这些方法都可行,但不是太可靠。' P) M5 p0 R1 l  }; E5 F9 G
  1. <script language="javascript">
    ( u2 p" k# n5 ]/ F+ k2 Y# e
  2. if( top.location != self.location) top.location.href=self.location.href;
    0 H4 Q8 Y- z3 O# N& M4 _
  3. </script>
复制代码
) e, A! y( i0 E3 K
  1. <script language="javascript">2 F: j2 E4 Y1 Q
  2. if (top.location != location) top.location.href = location.href;
    3 d4 i) c, m  b5 |% [
  3. </script>
复制代码

) Q) m+ y% x' l6 a5 n! d7 Z- }% j' y
  1. <script language="javascript">
    8 X' M1 T7 T- E# i  F( W
  2. if (top.location != self.location) {top.location=self.location;}7 \$ H0 a( }6 f/ R9 X' o( [4 g" Y
  3. </script>
复制代码
0 U- z/ O7 Y" _0 R4 t9 j2 |
  1. <script language="javascript">
    # u, c1 ?/ d9 s6 E5 p: s1 J, o
  2. if (top.frames.length!=0) top.location=self.document.location;3 b# l# Z* T# q# o
  3. </script>
复制代码
不可靠的原因:7 V! h! B, y) @# ^- q9 u6 i4 i
当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。
" y* u4 K% \1 o) {0 g# d: w
  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>
    / g& q3 F8 r: ]2 z
  2. <script language="javascript"> - u( m) p1 p+ U/ `6 d+ G2 \1 R2 q- m
  3. var location="";
    ( d; g/ @; c; V
  4. var navigate="";/ N+ R5 L. v, ~4 X. [
  5. frames[0].location.href="";
    * G. n, i; D, d$ }$ T+ `* M
  6. </script>
复制代码

6 Y! Z, ?1 ^9 a0 @
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码
" M, n; }% x& X, a& U

. P) Y* r- z: ~  p6 M+ }
  1. <script type="text/javascript" charset="utf-8">
    ' M4 n7 H; P9 K" H( L) Y
  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>');! B0 l- {7 K! d1 ]& H0 c
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。/ J0 ~! E; A( S' g- V9 R+ H2 D  S
Meta标签方法. Y: u7 }) l/ z9 H
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法9 Z8 M! z  G5 e
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法
# K5 q/ Y' L6 L% K
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法; Q: b) ?8 D0 G. B& r
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码

1 Z- _8 y6 ^' C( Y9 w2 S& |9 z% A.htaccess方法
# q( o- ~+ w2 F% ^& |在网站根目录下的.htaccess文件中中加一句, g$ O. u- O, A- S; |* L
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码

$ \1 D( A$ w  O$ V( KIIS方法/ y: E+ x5 `3 x' s8 ]4 e% \0 }1 D
在web.config文件中加
  1. <system.webServer>
    : H( l7 U  j. w/ J# `1 {5 x! w1 I+ K
  2.   ..., L* G+ `9 \7 g7 P
  3.   <httpProtocol>
    9 _: s' v  m7 H( e! A; b
  4.     <customHeaders>
    % Y4 W: x7 J2 h. g; W, L" J, u. ^
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      
    , i" {, ^+ w4 w+ N/ E5 Y
  6.     </customHeaders>    4 f' P7 R2 ^! |' _; Z* _
  7.   </httpProtocol>  " D3 L" y  w: P6 R9 _' `
  8.   ...
    7 _& O* M2 u0 _6 k* f
  9. </system.webServer>
复制代码
: _) X, p0 {5 R0 W$ J
之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。# _) y& m/ G' m, b

8 l' u) h  k+ v6 j3、推荐解决方法。
# E9 G# l# Y& {; x5 R7 ~; m  {
  1. <script language="javascript">  ) ^8 [$ U6 i5 n' s  ?
  2. if(top != self){
    % T$ O& h# ?$ @4 Z, N
  3.     location.href = "http://xp6.org/iframe.html";  % s8 B4 C. n; b
  4.     top.location.href=self.location.href;
    4 k5 m3 A$ n2 x) h7 I0 n, m& j
  5. }  
    8 x. g+ x4 E- p( l4 C$ X% e" T
  6. </script>
复制代码
; d( X5 u( g6 @# L3 i7 B% N
将上面的代码复制到需要屏蔽页面<head>里面加载。# \- V# e3 K4 B4 k& W: E" l
制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。
  U5 u$ M4 h6 A; T原理:
5 A/ G  I5 v$ n0 Z- I第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。
( q  V. |9 J; ]3 R第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。- O" `1 K( _$ D) {5 T' o, h4 T! |  U4 d
目前测试这种方法没什么问题。
$ ?7 Q0 Z- T. L  v1 Y5 m8 e% e8 c: v% F( b& p, X6 i1 _) v+ F
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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