搜索
查看: 14657|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。
( [2 {, B4 v' q. y! `( s这次讲一下如何防止自己的网页被别人iframe。
( O( ?5 V: z7 T" i( A1 C) R+ \4 Y0 e/ T$ u" W
1、这些方法都可行,但不是太可靠。+ N2 j" U& R: l; a' V
  1. <script language="javascript">" C2 @% Y  v5 D3 N& k
  2. if( top.location != self.location) top.location.href=self.location.href;
    % W" s# ^6 n: t* B0 R+ k
  3. </script>
复制代码
" x4 [; }- N% O4 c3 S7 L
  1. <script language="javascript">- J8 s* }+ ~# s
  2. if (top.location != location) top.location.href = location.href;
    6 U9 h" @% x/ b7 E' `) _
  3. </script>
复制代码

1 E% F; y4 R, K* Z
  1. <script language="javascript">4 |+ F( |: i0 O8 c0 K
  2. if (top.location != self.location) {top.location=self.location;}
    / A1 Y* {! ]. F0 [$ m4 U
  3. </script>
复制代码

8 p& {) L! w( j; [
  1. <script language="javascript">: C4 c, b1 n6 H6 H! j  W3 G
  2. if (top.frames.length!=0) top.location=self.document.location;
    2 v, ?% G6 u- A0 ~+ k% E& L
  3. </script>
复制代码
不可靠的原因:* m3 }8 r- n. e% s/ p. i6 i! s
当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。7 Z) s* F; B# U0 }2 O
  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>' s7 v" P3 C6 K0 i2 F$ J
  2. <script language="javascript"> + t3 m: _& l+ R$ |
  3. var location="";
    0 E% A9 \( @6 l# i% P) T- ^
  4. var navigate="";+ t1 ?; `. Y; ^+ h
  5. frames[0].location.href="";
    ( t/ @( \9 Q6 O) r5 t, O7 f% j
  6. </script>
复制代码

# r- V6 ~6 o" N- x
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码
9 g0 Z0 r7 H( q
( k' P* }" p# g1 Z' p/ j
  1. <script type="text/javascript" charset="utf-8">( `" u1 C  J! X- y0 c+ O
  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>');8 k4 }- V3 z0 q. o( t; U; A8 J9 e
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。
, o* l" [% U; HMeta标签方法# V+ R9 ], h: i- a! m
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法% U/ _/ @% m0 f9 y1 [
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法
, s9 i4 @5 a9 E5 E# x
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法: E$ [3 b9 F5 ~; l. A; N+ Z
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码
& d  G& M- ?9 r
.htaccess方法
  z9 q. q0 p( C' L# z! L2 ^在网站根目录下的.htaccess文件中中加一句
9 P$ [! [; a4 w2 t, m- ~# n$ Z
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码

9 W, u$ B, Q% P! WIIS方法; ~/ [. L) i/ T1 d: a  m8 X: R
在web.config文件中加
  1. <system.webServer>5 M- J. J) P  Q5 j: E
  2.   ...: v; r4 c0 E7 p3 `6 Z. W9 S* U
  3.   <httpProtocol>
    + d, r& m) u8 a. s; @) w: C, s" p5 c
  4.     <customHeaders>
    ) h  ~* x& H% `$ O5 s0 O
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      
    ( U$ s% t# O, f/ o4 p6 [  x+ @6 c
  6.     </customHeaders>    * f/ G/ a1 p+ S0 X' I2 C' j
  7.   </httpProtocol>  
    ! A/ G2 T( b, l4 D( r
  8.   ...9 I( {* t' I- s5 H, ]2 o8 r5 C
  9. </system.webServer>
复制代码
/ d' c' l8 V" A4 A( N
之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。2 ], N/ O% k9 [
* h! n) H6 O7 h$ Q" M
3、推荐解决方法。/ M3 O3 ]1 B$ ?
  1. <script language="javascript">  ; X' Y% g9 u5 f1 l
  2. if(top != self){
    * J+ e2 o% W# ?% _$ t
  3.     location.href = "http://xp6.org/iframe.html";  
    4 u3 U5 V/ v7 [; e! w* D, P' Y" d
  4.     top.location.href=self.location.href;
    # P: g3 s8 _2 C% G: W3 l4 q
  5. }  
    - r  M9 B  s5 A2 F* B9 F( j
  6. </script>
复制代码

% c3 T  I8 H  C' k将上面的代码复制到需要屏蔽页面<head>里面加载。
1 P( l% }+ J5 ?1 ~( U+ ]$ m制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。5 ?( F* P: s5 l" p: a7 k: z
原理:
3 |* E! k0 L# F# r+ L# z# X第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。# g7 F$ k; N- p# K4 p) |- w
第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。
) a/ r4 a0 U9 J( s6 K4 U目前测试这种方法没什么问题。; @% f* M' ~8 P8 p  _8 H$ @: E; C

& p5 O7 i' ~4 u; n
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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