搜索
查看: 14505|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。- y9 |3 e) z# Q6 h
这次讲一下如何防止自己的网页被别人iframe。2 _: p( T  y& i+ y7 H% q4 r" v- c" Y% |
9 {1 F4 s9 z0 D- y% Z& q/ p
1、这些方法都可行,但不是太可靠。3 ]: |. _3 k" t, p# v
  1. <script language="javascript">
    % m) D5 J( L* ]3 o4 z7 `, D
  2. if( top.location != self.location) top.location.href=self.location.href;
    $ v* C$ E1 o% B+ |
  3. </script>
复制代码

8 k) ]2 R! _- N
  1. <script language="javascript">
    " y% K" {5 p6 f$ y; ?3 Q
  2. if (top.location != location) top.location.href = location.href;
    / A, i+ P6 Q8 x) w
  3. </script>
复制代码

) X1 E9 _, b% W7 t7 [3 U' R
  1. <script language="javascript">  }" t: ^# m' Q
  2. if (top.location != self.location) {top.location=self.location;}
    0 I3 n8 A7 J9 B' i/ U/ A4 R
  3. </script>
复制代码

. q  m# F) s( |8 H4 I# r! \3 G
  1. <script language="javascript">
    ' w- d3 \& \2 f( m$ R
  2. if (top.frames.length!=0) top.location=self.document.location;
    % a3 L) V+ R* H. w. n/ Q$ t
  3. </script>
复制代码
不可靠的原因:0 |2 Q5 p0 y6 o
当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。
2 b# o3 @2 Z6 A5 f! A! v9 s: 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>
    ) e9 Z9 [* n& l3 F9 H
  2. <script language="javascript">
    ; ?' I: f! c0 f% M7 s
  3. var location="";
    * E1 }4 E. S, x# g6 p- h2 M
  4. var navigate="";! h* y6 M; {3 V3 B
  5. frames[0].location.href="";7 q( \6 r& b$ M  p( b/ G/ {
  6. </script>
复制代码

$ G! [$ r8 p* P0 i1 v) u5 m
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码
8 F+ ?, ^2 p. I* n% {. J9 h

$ j# x: c( w  J! a
  1. <script type="text/javascript" charset="utf-8">
    + f$ G1 S2 U* g# x. q- T
  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 ?; T, N* ~" R* x4 b4 r  I: J  N
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。0 \: \, j/ F. @
Meta标签方法
  v/ v6 c% Q6 T" }- [! Z
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法" p' S% l0 h% j2 p% x  f
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法5 q( d% |1 V$ \1 ]
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法3 k6 P' v$ H! v4 |
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码
: t" X5 t- K6 x* T9 |
.htaccess方法2 @0 [8 k3 Y1 e& C
在网站根目录下的.htaccess文件中中加一句
, }4 o; l- V3 ?
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码
. o: E6 H" ~* V  Q1 b' E2 T3 ?
IIS方法$ _' `4 X! u* o$ i7 A% ~
在web.config文件中加
  1. <system.webServer>
    ' X2 _3 t- B; @' U! K# C
  2.   ...
    6 t4 a$ p$ `/ I( T3 Y1 o' H* t
  3.   <httpProtocol>$ H3 w6 ~/ _5 E' a
  4.     <customHeaders>
    6 L- ]3 b# H) V- p$ n$ }+ S
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      
    ; h9 L" L1 J; W
  6.     </customHeaders>   
    2 X. }9 H  y' F" S6 r  D
  7.   </httpProtocol>  ( H- V  P2 @/ i: D
  8.   ...
    0 S) V5 }0 b# E4 e
  9. </system.webServer>
复制代码

+ M) ~( m- F9 _" I6 u! C3 U之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。$ g, R: }! S) X8 ]4 M* p: @# M

" Z: ^- s) Q! g7 O: K3、推荐解决方法。! p/ I0 g* y& n& e
  1. <script language="javascript">  
    3 ]% w* e; }4 T& f
  2. if(top != self){
    9 Z3 Y9 e# @# p$ Y  [7 |
  3.     location.href = "http://xp6.org/iframe.html";  # I, `- S) k( v
  4.     top.location.href=self.location.href;. Q! T. ^/ L2 l/ a( ~
  5. }  $ u3 F' I4 v, E: G
  6. </script>
复制代码
/ ^  z2 [: P& G- w  P& Y1 O6 [
将上面的代码复制到需要屏蔽页面<head>里面加载。
) {% `! V8 ~4 h% t1 F制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。/ o4 g- p3 @1 F, a
原理:
& a- x+ i! }# Y! D: x第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。
) K  |6 `1 g9 I/ E! h  X& \第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。4 z$ u: }4 y6 ?! N
目前测试这种方法没什么问题。, e$ J  n, ^( [2 w7 {

% F4 q: \6 Y; N8 |$ j' P' s
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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