搜索
查看: 14275|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。/ C$ ?- [5 T4 I9 Y6 W! i- N4 d- B: Q
这次讲一下如何防止自己的网页被别人iframe。
8 x4 ]2 N, r: t' O% c0 A; W7 y5 }( h* W7 \# M
1、这些方法都可行,但不是太可靠。
" h" _+ [3 x4 ^/ Z: M. V$ i
  1. <script language="javascript">
    9 ?- K2 Q. x$ K+ T
  2. if( top.location != self.location) top.location.href=self.location.href;
    6 o$ M( ~9 x) [# T  ~
  3. </script>
复制代码
6 @& B9 X* H4 ^
  1. <script language="javascript">" t4 p4 y/ k. V  B, @' p# ]
  2. if (top.location != location) top.location.href = location.href;
    ; f* H  C( F' b* {
  3. </script>
复制代码
8 @0 K+ q5 i- H7 s/ ^, ^
  1. <script language="javascript">
    % P- v$ `" o, ?4 @9 M
  2. if (top.location != self.location) {top.location=self.location;}
    9 @) e! q3 }; r' t* |. [9 ]
  3. </script>
复制代码

+ P  i) k# t6 M3 {5 ^  T
  1. <script language="javascript">, d' t# t9 ^$ D3 ~, g# \- g4 x
  2. if (top.frames.length!=0) top.location=self.document.location;
    ' l6 [2 v' B$ a! {
  3. </script>
复制代码
不可靠的原因:! a6 _- e& L+ s% m" H* a- K
当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。
2 P$ K' A  T' t0 F
  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 `$ Y, x) w# d) W- W% f/ ]4 j
  2. <script language="javascript">
    2 r5 c$ o! J6 [7 r; \) D" u7 C
  3. var location="";
    / f; d( o3 A! c0 j# A
  4. var navigate="";
    ( Y) m& B: Z7 ^* v7 Y4 a
  5. frames[0].location.href="";
    1 X$ y' o# \/ }- {6 W) B; m
  6. </script>
复制代码

. g! P" t6 k  E4 }1 c. {
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码
- u7 k4 t* A# ?" ]6 P4 `# h
  y; \/ ?- }7 W, ]7 J
  1. <script type="text/javascript" charset="utf-8">: V- D; ], m! d! s8 \2 i% L  {7 u' X
  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>');
    4 e" n( r' t' ~2 J
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。
5 [0 m9 m: G$ f" B! C7 |3 EMeta标签方法0 m$ f* o/ a. p9 h
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法4 F( [! |8 z0 y0 y' f4 A
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法5 g, J* S) d- M$ ]- |
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法0 J" R4 r7 W, `1 Y
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码
+ z+ }7 j6 }* P8 z7 o
.htaccess方法# m! n1 @+ s' M7 }
在网站根目录下的.htaccess文件中中加一句
. D4 P& z" t5 z3 a. O, G' f
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码
9 H: x& G( x* l! R6 ^
IIS方法. p+ C: F5 A) l  b& d7 t
在web.config文件中加
  1. <system.webServer>* {3 @6 L/ H2 p+ Q$ p  D. [3 `" m$ ]
  2.   ...
    : k0 G6 R% B, d$ Y
  3.   <httpProtocol>  F7 J4 h3 L( N0 A# A: J
  4.     <customHeaders>
    1 v& a8 N" C3 l/ j- l6 u3 x
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      4 M* x! K2 v$ Z# O: a
  6.     </customHeaders>    3 u! C- z2 O$ e5 Y6 [
  7.   </httpProtocol>  1 d( a+ L" D8 V0 g2 L6 y/ i2 O
  8.   ...
    ' N# j+ q) g2 o0 N
  9. </system.webServer>
复制代码
- }3 ~1 B, y  u6 {6 W6 A, n3 @* s
之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。5 d+ r, @! ^% a$ q# i8 L
, H6 ?/ c! i: E* c  M: a
3、推荐解决方法。
6 ]( E" P6 o' g9 C" b
  1. <script language="javascript">  
    $ A6 U4 o4 W8 K' a& s. G6 U
  2. if(top != self){1 K" B7 b2 a& l7 h+ W
  3.     location.href = "http://xp6.org/iframe.html";  
    ; S" c0 [) B4 f
  4.     top.location.href=self.location.href;; j! B, Y2 L- H
  5. }    B5 h* ~& p; ~* K# l7 K6 F& D2 d
  6. </script>
复制代码

. Z, t5 M! u- M将上面的代码复制到需要屏蔽页面<head>里面加载。
; f3 w( Y5 t" R( n7 g' u制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。, ]; T* n0 W7 O" i. F
原理:3 A0 L/ X3 x6 r, O7 \/ f& D& l
第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。
6 W8 l# B4 \" C$ A第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。$ V0 R1 b' V. d; H. H
目前测试这种方法没什么问题。
( X2 ]8 G- n' x) i* P$ U
6 [  p! ]+ h+ L, {$ L
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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