搜索
查看: 14415|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。
/ K' p; a" n2 `. A* l3 r这次讲一下如何防止自己的网页被别人iframe。/ c/ q4 g/ ]' |) ]

' L/ \0 W+ t( i) d1、这些方法都可行,但不是太可靠。
5 {3 f6 R: d9 l
  1. <script language="javascript">
    5 o5 |$ P8 }( F2 n
  2. if( top.location != self.location) top.location.href=self.location.href;/ G) `6 Y% K4 I' {+ w, q& E8 ]
  3. </script>
复制代码
. |; e7 s8 j% N  e* ]5 Z5 G
  1. <script language="javascript">
    ; x8 b" N+ V2 a% k" b( \- ^1 V
  2. if (top.location != location) top.location.href = location.href;
    ' R( A, F. F5 l$ V0 P
  3. </script>
复制代码

0 U) @( \. s: a$ s# Q/ G. \* J7 \
  1. <script language="javascript">" @. F" s) V2 v  ]
  2. if (top.location != self.location) {top.location=self.location;}( \" Z# C* E4 `! k; y+ d; j) [- D
  3. </script>
复制代码
' w/ ?3 n/ G/ ]% |
  1. <script language="javascript">
    4 r5 d0 d: G! Z( G! Z3 o) O1 Y
  2. if (top.frames.length!=0) top.location=self.document.location;
    2 r0 o: t' Z' Y) D8 Q- K
  3. </script>
复制代码
不可靠的原因:+ o% j/ t! A; m9 ^  ]: r  m' u
当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。
6 s( I! A, H. O1 B6 B% q: y  h* S
  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>) p! ^1 T: S5 J. \+ O9 e
  2. <script language="javascript">
    ' q) F0 T: S/ i# j- a# C
  3. var location="";
    : {5 {1 c+ ~- k1 P+ p' ~# ~+ M) M
  4. var navigate="";$ a7 Z+ @* m5 J
  5. frames[0].location.href="";" ~' F9 B4 n5 }- \- j$ {+ @7 t
  6. </script>
复制代码
& l' l6 L' g9 K- t
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码

' p2 D0 n- _$ X0 z" e; }+ S/ H; J9 w7 N% D6 t9 o
  1. <script type="text/javascript" charset="utf-8">4 b& L8 J" g' t( p6 z2 `* U9 V& K
  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>');
    & I3 i( H7 Z& Z3 z
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。
( A2 g6 F: Z+ h; F  H: nMeta标签方法$ Z, s* B; {+ R6 B8 d6 H
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法# G0 A; W( R, i
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法
2 J7 k% ~( r; M: t
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法
' H0 k6 N) b  \
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码
- y$ ^1 g& M) X7 }, J/ {, T# }( c
.htaccess方法
# m' L2 }& N: u1 x( `1 r在网站根目录下的.htaccess文件中中加一句
. w9 _% I- g* G
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码
: {" X  |2 S8 }# P7 a
IIS方法% E* {5 D6 G5 z6 o( z5 k( l
在web.config文件中加
  1. <system.webServer>
    # G' v! i1 {/ ]/ U* A0 ^, D4 F
  2.   ...1 {; J/ Q: n# h. X7 c# E4 O
  3.   <httpProtocol>
    : [* A) U( z! k5 H" N
  4.     <customHeaders>
    * b0 O$ e1 z6 @2 i5 j1 g* v
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      
    ( T5 O$ x& B6 X/ X
  6.     </customHeaders>   
    6 r& k5 a" M+ P* W/ @; N
  7.   </httpProtocol>  6 E8 K. E0 N9 K; m' \: W
  8.   ...
    ; z9 V6 W% E3 ^- F( z1 V/ F
  9. </system.webServer>
复制代码

( c- `* Y3 u" S之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。- C+ x# W) h- J+ N  C, d* O
# I8 \' J, O$ D5 L  g
3、推荐解决方法。9 a9 k4 v- J3 _2 t4 B: b' B
  1. <script language="javascript">  , y$ l' x$ K# [5 G
  2. if(top != self){
    7 J1 c7 K4 ], O$ v
  3.     location.href = "http://xp6.org/iframe.html";  
      }* b4 J$ R' Y0 d, g
  4.     top.location.href=self.location.href;
    * f6 q7 ]+ q5 ?, w3 |/ Y: V* C& O
  5. }  7 U: }1 f( F2 {6 E7 [6 b
  6. </script>
复制代码

) H. h  C+ u/ L  g8 m& F! @将上面的代码复制到需要屏蔽页面<head>里面加载。- E' i4 V: L$ W' m, j
制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。1 A, B+ Y2 m6 D/ X3 V2 O
原理:3 [& G% u) B1 u7 C5 ?
第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。
4 T3 x# z  w" n% U: K第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。' f" t1 {. N( D# b6 e" c7 m
目前测试这种方法没什么问题。7 \/ U0 d8 t2 d8 V& i( B
4 y2 N& i# X+ Z' L
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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