搜索
查看: 14634|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。8 J- J: X5 m; r# ?& a
这次讲一下如何防止自己的网页被别人iframe。
/ ^3 E( F8 D3 I* Q# C! y. |0 @/ ^4 X* `; b
1、这些方法都可行,但不是太可靠。
! E" v" z" [7 v# v( D% E1 C
  1. <script language="javascript">
    , }* v- s- ]# O2 l
  2. if( top.location != self.location) top.location.href=self.location.href;
    4 g/ ]+ x: e& I$ F8 P
  3. </script>
复制代码

; y. O! N4 P: W% l
  1. <script language="javascript">3 J# {1 v0 m* v) u& d9 \+ r
  2. if (top.location != location) top.location.href = location.href;$ U8 B0 F- I3 T6 F  s) a
  3. </script>
复制代码
4 p* b1 T2 Q% b+ f0 b4 n
  1. <script language="javascript">
    ( V4 Z/ v1 c4 I9 p
  2. if (top.location != self.location) {top.location=self.location;}# m9 ~6 B  o  P
  3. </script>
复制代码

% ?9 Q& g' z. ?# Z; O
  1. <script language="javascript">8 N4 q  ]4 T3 l
  2. if (top.frames.length!=0) top.location=self.document.location;
    & z: F" E) ~8 t/ `0 _
  3. </script>
复制代码
不可靠的原因:
+ I1 e& i" x' Z  {5 @0 L$ [当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。
9 l' q* B6 Y. z% G% e
  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>+ @9 f  \4 g/ [! q( a' O
  2. <script language="javascript">
    5 G/ ?- \) M6 U5 q! `
  3. var location="";
    9 t6 |; _$ R% `: F
  4. var navigate="";2 y; _. Q5 P$ j3 [. ^. F
  5. frames[0].location.href="";0 M+ ^/ s5 x$ ]: A3 G
  6. </script>
复制代码
' b! G9 C$ L7 l
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码
! V; K# T6 O$ B; g! W0 m  v
8 R1 f& @* U% z! f5 k
  1. <script type="text/javascript" charset="utf-8">
    $ K5 L2 u. T6 H* l- _
  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>');
    ( z0 O# G5 ^5 C1 v' I4 T4 I
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。
7 g& @' ~) ]- rMeta标签方法
4 O2 v" e/ y' \9 O# g
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法2 H! V. S) E; @
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法/ x- j, d' E: _$ u
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法
" s" v- J0 S: P5 `+ o
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码
# K7 J/ g5 ^, O+ Y  C- ?" m
.htaccess方法) [( o: V& A- e; X
在网站根目录下的.htaccess文件中中加一句
+ T2 @  \; Y+ J, e; M4 ~; C. a$ Q
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码

' Q3 D: P. r. }5 wIIS方法
* c, E7 A$ j/ g0 E6 |4 E: D8 L9 G, v在web.config文件中加
  1. <system.webServer>
    2 U1 v: W" [' d6 {6 M3 Z; j
  2.   ...* e) {! l  X: S/ M% N$ @
  3.   <httpProtocol>
    4 ^" t/ c& y' h- ]( d0 T* Z5 N4 h' ^' [/ @
  4.     <customHeaders>& S# `6 a. u% G* z
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      $ z1 O2 S+ L$ Y* a
  6.     </customHeaders>      ]! h( L/ x# m5 e) }
  7.   </httpProtocol>  
    ) _# p  }) _! M1 v$ r5 e6 @0 ]
  8.   ...
    4 G$ P8 l- k# l" Q; L& ~1 z9 z
  9. </system.webServer>
复制代码
& a- I% p  [5 u* D4 R4 k
之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。
' K: _+ Q3 A, p7 J* W0 w! G- S  V) E5 t* h6 R# g# S6 G1 T: E
3、推荐解决方法。0 f* o6 u7 I1 H* C) N
  1. <script language="javascript">  
    # D. f8 \+ K& K1 ]! y, Z
  2. if(top != self){
    / Y% @% n' V+ C% G7 n3 o
  3.     location.href = "http://xp6.org/iframe.html";  
    + `% K. H2 r; Q, B/ o
  4.     top.location.href=self.location.href;2 z4 e% U* t: [4 B# G1 ?
  5. }  
    ; V( p$ O/ I2 C. N
  6. </script>
复制代码

( i" d2 w9 G) J4 d! ~将上面的代码复制到需要屏蔽页面<head>里面加载。! p* E* S$ R# f3 N# d/ M# }7 M( U' S
制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。
7 N  l7 F. q6 k! \6 x# m原理:
  K1 E" V" a& p$ s6 z; R3 [  {- z. ]第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。
, w1 _- W; U3 g* f# z* V第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。
/ |$ Y6 m' h1 n& s2 _; c目前测试这种方法没什么问题。4 s' E& X: y4 e

* x* p' w3 [# D1 B1 Q" e8 A) t
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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