搜索
查看: 14435|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。
4 G0 A% k7 I6 [" v7 X" O3 ~+ C这次讲一下如何防止自己的网页被别人iframe。
; {7 s5 j1 |" c2 y6 B/ z3 a# g8 z7 v0 _& S9 B; k/ Y8 @( _' R1 p: o  C) |  p
1、这些方法都可行,但不是太可靠。# ~! k: u1 {, Q; o9 A
  1. <script language="javascript">/ |& J' Y- l3 ^4 N: I+ [. @2 h5 ?
  2. if( top.location != self.location) top.location.href=self.location.href;
    2 ?  m+ m' B3 N. ~& p
  3. </script>
复制代码

9 z! v2 I  l0 X$ @. @9 n6 D
  1. <script language="javascript">
    ( |$ W: p4 M6 u' U9 y
  2. if (top.location != location) top.location.href = location.href;( W. C2 ?4 j0 }/ L& I, R( t
  3. </script>
复制代码

, [7 p8 N9 g* e0 t& h. F+ ?
  1. <script language="javascript">: t( X6 M! ], U8 |) ]8 D' B
  2. if (top.location != self.location) {top.location=self.location;}
    " i+ ^' _3 ^1 T# w
  3. </script>
复制代码
5 X6 l8 j2 S- F! C  z/ d8 u# z
  1. <script language="javascript">, }7 ?. }# p8 `  C  F6 `* D
  2. if (top.frames.length!=0) top.location=self.document.location;* k( e3 g* [7 N- Z, @
  3. </script>
复制代码
不可靠的原因:- X, S; R5 H. z
当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。6 e! S; B8 Q' X& S6 b
  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 M! ], [% s2 ^! w: ]* Q
  2. <script language="javascript"> ; j2 M; V1 [  y" I( Z' ^
  3. var location="";$ ~0 n7 d0 e7 v; L% O" M8 a
  4. var navigate="";4 |# b2 c/ j+ m0 k
  5. frames[0].location.href="";6 y1 n! H* X) d4 }9 H  M) W' s
  6. </script>
复制代码
: A0 k, W# ~2 e
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码

4 ]. B4 }& P5 r$ P" n. s3 O, ~# _  d
  1. <script type="text/javascript" charset="utf-8">1 n$ y  V$ R) Z' g- p
  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>');5 O  s& o0 ?( [0 M, R
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。. \0 N' |; E! {, v  f! B: \* Z$ [
Meta标签方法
3 D) |0 [( d$ `! K8 G. x
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法8 J+ J+ b, [4 I
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法
9 t, [! \/ ~# k& D4 d
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法
  p& C5 Y5 [2 j1 l% x4 E0 ?
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码
" O: W' w0 x5 J6 t+ q# G: r# P- n
.htaccess方法/ a/ N: x: Y8 Z: G) J  k
在网站根目录下的.htaccess文件中中加一句
4 Y, s; U+ P& e- L8 J0 v, c
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码

; P. u6 A/ X6 {! F6 T% H( QIIS方法
; n' j: o% N9 @  O5 b! n在web.config文件中加
  1. <system.webServer>5 h1 |* }$ ~, N# z
  2.   ...
    ; I( m! J6 x1 x0 O, q5 X1 ~
  3.   <httpProtocol>* K; j9 U2 m9 o+ F2 |) S3 w' k
  4.     <customHeaders>  C' i2 X2 y' ~2 b" f1 [2 ]) f
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      8 j/ e+ g, r) v- A/ H5 ~2 I  U4 u/ f
  6.     </customHeaders>   
    1 o9 D7 F5 `' Q, U6 O
  7.   </httpProtocol>  * k! i) ^4 A5 q2 g$ ?3 i
  8.   ...0 D& |; \( y9 _2 [* \4 p: G
  9. </system.webServer>
复制代码
0 }8 |# N+ c: R3 c
之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。3 \$ j* [2 _  Q2 }
+ G0 l% L+ m3 E7 g& y( r/ n5 Z0 T5 K
3、推荐解决方法。3 o9 ?- Z* A/ L  ~& K
  1. <script language="javascript">  
    % k$ [- D  G- U( l. A2 J1 R. c
  2. if(top != self){
    5 r; g7 ^+ Q/ I( W) c! H9 G. y" ~* j, [
  3.     location.href = "http://xp6.org/iframe.html";  
    1 O. I1 e, t+ m& z- }: |" e
  4.     top.location.href=self.location.href;  A; A+ [& P" k& h
  5. }  3 a" N9 d# S7 {" R# D- A
  6. </script>
复制代码

( ]: L/ s, d  b3 ]9 J将上面的代码复制到需要屏蔽页面<head>里面加载。0 C5 q7 y( {/ ?& @$ x
制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。
! Z4 X+ R  J, d8 a, M原理:
' V- a6 n0 O; b+ m- E, |) c第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。
/ C: q3 h5 y/ _8 ~第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。
, J$ ^# X9 V* P3 R2 K2 F目前测试这种方法没什么问题。
7 I- H) x# f. j* H/ v9 O3 M5 o: k& D2 s8 M! c
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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