搜索
查看: 14408|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。
) L+ Z& }1 N* Q. i( P1 [这次讲一下如何防止自己的网页被别人iframe。8 N$ v9 f& z1 o4 o7 z& N
+ c; U# i! Y( ~8 V% p
1、这些方法都可行,但不是太可靠。
. Z, B2 M6 R# R* i. e3 V- }
  1. <script language="javascript">
    * V' q$ E* y: z% ~) W  e
  2. if( top.location != self.location) top.location.href=self.location.href;" h6 Y3 @" ?7 z  D
  3. </script>
复制代码
" o) u- {2 ^  c: f9 ]
  1. <script language="javascript">- N' ~' W$ L# ~2 U& {
  2. if (top.location != location) top.location.href = location.href;: _0 L, u2 W9 t! O0 P% t
  3. </script>
复制代码

% C4 o0 H  D# H
  1. <script language="javascript">& E: g" `% I! B3 S; Y: S, j# S
  2. if (top.location != self.location) {top.location=self.location;}
    ! H% @5 W0 a+ Q# u
  3. </script>
复制代码

. U0 b: s: Z5 H
  1. <script language="javascript">
    3 K4 c) p/ c! {& F7 ^) ^4 F6 f
  2. if (top.frames.length!=0) top.location=self.document.location;
    " B  o; ?5 U! Q( k( V- x
  3. </script>
复制代码
不可靠的原因:
+ j8 t7 J3 X+ w7 I当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。
2 i. g) F" Z: g3 X. ?
  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>8 l2 P+ K$ D1 s* t$ Y. M
  2. <script language="javascript">
    " D- ~9 s& x3 C% I
  3. var location="";
    + w: x4 {% g* w$ u% N
  4. var navigate="";" G0 L' a; t; f* ?8 o6 A
  5. frames[0].location.href="";' l+ b* \( ^. ]7 ~8 C% ?
  6. </script>
复制代码
! f# M/ t. W$ m% c8 ?# ]+ a. _# N
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码
- z! n: A( `7 ]/ }1 \8 v- u6 A" w
( S3 K$ H0 h) |
  1. <script type="text/javascript" charset="utf-8">3 \: X% _. k, f3 k& e% E
  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>');% n( J+ h4 c! c) n( t- h
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。) n5 r. @, {( ?# ]$ d  I& z
Meta标签方法
5 S+ }" ?/ o) E( m
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法5 z- a5 m7 T& ]
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法
* \3 j# s0 k; ~) b
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法
( R9 k. W: s: a0 N4 A; W9 D3 y
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码

7 u' u7 A0 g$ A5 @3 V.htaccess方法
3 q; E  s- F; D  e在网站根目录下的.htaccess文件中中加一句
! Z5 t/ _+ l% p" n  |% W
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码

0 A. c  K7 N+ k" mIIS方法+ H0 C- A7 c6 Z; ?; z  ]2 g( T
在web.config文件中加
  1. <system.webServer>
    6 G$ D* ~/ C6 m0 h4 [' }! [6 O
  2.   ...
    : P9 Y( _5 ^/ ~
  3.   <httpProtocol>
    2 e  c2 T: _8 I' B. X' P
  4.     <customHeaders>0 l+ m+ B3 \! H# i' W6 }' l
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      0 Y* Y( ^& ]4 d3 P5 h+ x
  6.     </customHeaders>   
      U) o( H" M! h3 R
  7.   </httpProtocol>  
    . d- V5 q  i& S) f' G* x
  8.   ...
    ; d1 }6 a1 I% M2 I- z9 Y* |
  9. </system.webServer>
复制代码

# o& p& C8 r4 c- }3 d之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。  F! M8 Y  g. K" q6 t  w% j; {

3 H  u& H7 H6 A" Y' W3、推荐解决方法。( l- s7 Q2 ^8 v. r. _7 p& y
  1. <script language="javascript">  
    & Z8 g; I, s. ?, ~2 q
  2. if(top != self){6 k4 o. X' B( U; q% A2 V
  3.     location.href = "http://xp6.org/iframe.html";  
    $ J$ b. y( v, U/ p8 U4 E
  4.     top.location.href=self.location.href;/ V: z6 p: @' v+ l; `+ Y, _
  5. }  
    0 ~2 Q! M$ ]) m- G) D9 e
  6. </script>
复制代码
; E: E$ X+ s0 x1 a+ o
将上面的代码复制到需要屏蔽页面<head>里面加载。
5 M: E. o! k$ C" V制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。  t* i* m* {( a+ D" L: G0 R! l
原理:8 |' P4 W) P" X$ M
第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。- \& g% [' F$ I6 ]4 @7 p5 g
第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。* C& n, y/ i  ?! {, w' h8 i# k
目前测试这种方法没什么问题。
; E( G: J  U1 i! L% Y$ E( h5 G. A! f0 @
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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