搜索
查看: 14567|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。
) i! p, R: d7 Z% U" u1 `# T这次讲一下如何防止自己的网页被别人iframe。
: {! r2 H2 U6 d7 ?/ n3 q4 g. a( x  d0 h# C$ J! @2 Q
1、这些方法都可行,但不是太可靠。
( O4 i: e6 {# h! p( x
  1. <script language="javascript">
    . h" m3 ~" q& H/ f# A' H
  2. if( top.location != self.location) top.location.href=self.location.href;8 }! l0 N' K: D) s
  3. </script>
复制代码

. ~) m* S. j9 d9 }9 x( L+ ~" ?
  1. <script language="javascript">8 C& t# e8 y; I8 m7 L$ A1 S. n
  2. if (top.location != location) top.location.href = location.href;
    9 M! p& p3 S/ H) J6 p  O1 A
  3. </script>
复制代码
0 p( P& Z8 Z4 ^+ J3 |
  1. <script language="javascript">
    ' ^/ t8 H% S9 [. E" w2 ]0 i+ M
  2. if (top.location != self.location) {top.location=self.location;}: o* w; k+ ]' N) M. o
  3. </script>
复制代码
# C/ `5 b8 t1 H% f6 a2 r! L3 `
  1. <script language="javascript">9 t' l3 I- Q6 X; @
  2. if (top.frames.length!=0) top.location=self.document.location;: }$ D. X5 D9 l3 }1 k7 U8 Q; L
  3. </script>
复制代码
不可靠的原因:
: ~3 N# M( p9 [+ e9 `$ c2 V当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。
4 P" r- M; v2 ]- w# d
  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>4 F8 y( g8 B% p/ ^" d
  2. <script language="javascript">
    7 H8 r' _- W3 L( x
  3. var location="";1 f9 a$ u+ y. H) P; h; u
  4. var navigate="";' _$ w$ ~* t; g) P1 ^1 I0 U
  5. frames[0].location.href="";
    ' p1 O3 u5 p  U. w
  6. </script>
复制代码

2 ?1 T: N- Z1 P0 [# y2 k$ y
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码
# P3 \+ ?8 R0 j% M7 k, A

/ ]* {% V( _: v; a
  1. <script type="text/javascript" charset="utf-8">$ R& J# m% h, E1 D3 r& U
  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>');
      e7 f# S7 H, O4 z* T
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。
1 ~9 A& z% U0 q0 j0 tMeta标签方法0 X% \" K! D) K- N9 I6 h+ i
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法
+ p. R7 d: M! k
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法
  b# }! T( h+ G* b1 C3 ?
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法
1 u, m9 r; y* ^6 M. X% y! Q
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码

) \5 k+ b* R# m% w.htaccess方法
( E$ `0 w3 j$ _0 V) ~; u: H在网站根目录下的.htaccess文件中中加一句
9 G. N, w# m5 E* C
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码
6 j6 }/ A. i3 E  @" `1 P
IIS方法
, J. \( T. H) z; i, a7 a  V2 D" h在web.config文件中加
  1. <system.webServer>
    3 q6 ~. D* Q7 J. p  ^
  2.   ...
    / D' b8 K1 I- ?6 Z$ T$ w) F: l
  3.   <httpProtocol>
    " J  v6 ^/ k( u+ S; j
  4.     <customHeaders>
    " o4 X- X- n  S$ ~
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      ' P* q7 l- p" G/ m4 M, b
  6.     </customHeaders>    0 Q  I6 s; g$ b% \# b$ J
  7.   </httpProtocol>  
    6 U3 ~' I; G1 g# u5 E0 A% M/ G
  8.   ...6 h- Q7 L, ?* x; n, J( T
  9. </system.webServer>
复制代码

  K6 I7 v" f! Z! v* K+ F0 U7 r之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。
' z" c2 T/ p* r  b) D+ z6 N. g
* u  N6 Z* P& G1 j% d1 X3 @$ H/ }3、推荐解决方法。
1 i0 Q) n, U+ D6 F
  1. <script language="javascript">  $ @7 X! T1 h8 A# T- I2 h
  2. if(top != self){
    - T" w9 s4 h& C! c- k
  3.     location.href = "http://xp6.org/iframe.html";  
    ) H7 Q' h5 A( ?5 i
  4.     top.location.href=self.location.href;
    ' ]; R- C$ j) B) c% S: X
  5. }  
    8 L: A2 g1 a9 I! X
  6. </script>
复制代码
3 [, B- R8 |2 J
将上面的代码复制到需要屏蔽页面<head>里面加载。
6 ^3 c" \1 e# Q8 g+ g制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。
( o8 f7 b( [* B' N& u6 L8 r  K原理:# M6 f7 m, i7 h, x  I) ?3 b
第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。. P6 U4 x# P: n3 w2 x! V
第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。  Q0 P: H( Z) C# Z4 p. o" o# ~4 c6 R
目前测试这种方法没什么问题。
9 y! B" ^6 |3 z: a- z& B8 P2 n2 ~* P5 d, V
4 @+ x0 K9 q; E- c
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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