搜索
查看: 14393|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。
$ j# v! S% o6 a/ [这次讲一下如何防止自己的网页被别人iframe。5 @( I. s# {5 w5 G

! H  O" n7 o  M1、这些方法都可行,但不是太可靠。  E  r, w! k5 ]8 U
  1. <script language="javascript">
    ! Y( ?  v, _/ A7 u& G
  2. if( top.location != self.location) top.location.href=self.location.href;
    $ u# A1 ]- S" B# S1 C
  3. </script>
复制代码

) j8 ]: {% P  D% O; b8 G
  1. <script language="javascript">0 j; ?* F) C4 O2 e7 w$ A# r8 O! x
  2. if (top.location != location) top.location.href = location.href;6 s, v, b, Q" l
  3. </script>
复制代码
% e* e3 `9 p- G. z/ K  q5 b* q  y/ e" R& S
  1. <script language="javascript">
    $ I8 ^! K  S+ r" C. q, Y/ {, U
  2. if (top.location != self.location) {top.location=self.location;}
    ; p0 x1 F! M& ^7 [+ g0 D" U
  3. </script>
复制代码
( s3 _4 ?1 V- O8 d
  1. <script language="javascript">
    3 p3 Q7 G  S+ p6 H/ O
  2. if (top.frames.length!=0) top.location=self.document.location;
    * f  q* K' k4 P1 k' V  W, q- {
  3. </script>
复制代码
不可靠的原因:
( D$ M# o5 }, A5 s# ]当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。
0 N' Y4 l/ A- Z1 ~7 U# V
  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>& @8 z; ~" ?+ N% \6 K% O$ C/ E- o
  2. <script language="javascript">
      e) h6 A  p- v% j( `) ]) O
  3. var location="";8 i- z- X  m5 k# l0 v
  4. var navigate="";4 V1 y/ K5 Q9 W" G6 T" `
  5. frames[0].location.href="";4 s# _# J6 e' }4 ?& ]
  6. </script>
复制代码
7 `( v' P+ M- r: D
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码
  K% V7 v, k" N

- R6 Z& t' P8 r. O
  1. <script type="text/javascript" charset="utf-8">7 Y' k( ^" 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>');
    $ e  Y/ r0 g7 j% k3 ]& z
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。
2 h7 C' i! F2 \6 K! xMeta标签方法
, M$ V- P  R1 T+ o1 e
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法0 ~1 @4 z! w% C' y, U3 L$ H: [
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法
* s8 x$ z4 G3 D: k5 {" A& Z9 h
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法
: [# [( K2 l  I8 q$ ]
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码
: z8 _1 r! O# e7 `. o; N) U2 M
.htaccess方法4 r% m1 _( r9 a
在网站根目录下的.htaccess文件中中加一句
8 w6 H. b) i4 G* e" I
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码

+ {1 j0 I- c# W1 F2 V+ s' |9 zIIS方法0 c, Q# g/ l/ N3 l- O
在web.config文件中加
  1. <system.webServer>" P2 w* m% N9 ?2 \' z, b
  2.   ...
    " X2 w* o; o  p3 \$ V4 [" g8 O
  3.   <httpProtocol>( @& j5 C" \, Y# H$ V
  4.     <customHeaders>& s: H, p6 M  J# ?. `. p( h, A
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      
    8 J( m: i! B. b2 J4 I
  6.     </customHeaders>   
    5 T1 T* Q. @0 E$ b& W5 f
  7.   </httpProtocol>  3 l  ]9 w  K0 Z* M& e
  8.   ...
    0 v1 b6 d' r2 b6 z" k) e! T/ t
  9. </system.webServer>
复制代码
; D5 t3 n" O+ w* z) W7 V
之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。
9 I! Q4 D& V- K5 N9 Q3 S6 m3 u0 }  H. X
3、推荐解决方法。
' {+ j" I4 w0 |$ |3 ]! q5 T
  1. <script language="javascript">  
    & S6 @! m  x5 J% F
  2. if(top != self){+ y& E  ], `3 b9 r
  3.     location.href = "http://xp6.org/iframe.html";  0 y  N4 |. q; ]# S' W- L* Q% L* l
  4.     top.location.href=self.location.href;0 n& `& j3 U3 t1 }
  5. }  ! [1 |$ E% H' \* H" K3 R
  6. </script>
复制代码

& k% i, t* I( j/ x2 Q# \6 E将上面的代码复制到需要屏蔽页面<head>里面加载。+ a0 e0 l1 W' |; q( B
制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。
5 F( |9 V/ i0 L: F1 m$ j原理:5 W+ L3 I/ L3 i$ t& ~# Q' f( v
第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。* e& t4 |9 ^+ L2 ~; f
第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。% Z. m. I+ m* w
目前测试这种方法没什么问题。
  a+ I) y: W* N+ l' B# |% U7 R: l, y; }3 X9 F; [& a8 [8 g; }0 u
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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