搜索
查看: 14512|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。, x! x6 z( y+ V& ^$ E7 }; J
这次讲一下如何防止自己的网页被别人iframe。$ I4 g6 G- D/ Z* g
' I- _8 S- P9 U6 f) O1 U& d) t
1、这些方法都可行,但不是太可靠。
( W: O; x. {6 G. J. J( s. X
  1. <script language="javascript">
    / S% P9 g) \9 _. i8 N& d, `
  2. if( top.location != self.location) top.location.href=self.location.href;9 t8 z; z- {1 B0 A
  3. </script>
复制代码

4 r+ N) d9 X% W9 m0 k$ i: @
  1. <script language="javascript">
    2 {, V, v1 D0 C( m( K$ n
  2. if (top.location != location) top.location.href = location.href;/ L# u* Y( t7 \* _2 E
  3. </script>
复制代码
% q% k6 {) g6 `7 O. Z1 W
  1. <script language="javascript">
    " s6 r/ d6 `1 x/ k' K
  2. if (top.location != self.location) {top.location=self.location;}' _! [( j+ V, H$ \" _; \$ H/ J3 x
  3. </script>
复制代码
* v, Z$ _/ `$ |6 z- [
  1. <script language="javascript">8 [- }1 D- [0 X6 X3 o5 S/ n
  2. if (top.frames.length!=0) top.location=self.document.location;
    3 S0 H" {$ O" U8 r7 o
  3. </script>
复制代码
不可靠的原因:- }5 f9 g2 j  F& |* C1 O
当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。
7 T) B3 J) D. 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>+ t; ~% c: c& p
  2. <script language="javascript">
    & m8 D8 P6 `& H- \5 p, ^9 _
  3. var location="";
    , Y% D% t! L6 A% U9 u
  4. var navigate="";* G9 }( J3 O. x& @: P5 s6 f9 l
  5. frames[0].location.href="";
    7 f4 J* h8 A& z
  6. </script>
复制代码

8 g1 {' o1 l* l; E2 o7 V
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码

2 |1 ^* k3 M  Q) D3 S  c: S$ O. Q( x' b+ |; n/ u. i; j
  1. <script type="text/javascript" charset="utf-8">
    " d" T( ]! l% t; {2 t- M
  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>');
    : z2 m2 @8 h! Q6 [8 f
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。" f5 ^, J* M/ _2 p: h! d( T
Meta标签方法
4 P% y& {) |7 _# b0 p7 k+ }) g
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法
3 R* f/ ~8 J7 m; I) ?/ ]# `7 B
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法8 e, C' z5 `+ }5 s* [+ O
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法( y* {. R! F/ u. |! t$ ~
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码

) p9 N. k' l+ k5 l/ h" i, s.htaccess方法
1 a" p7 J; p; p5 Z* {+ O在网站根目录下的.htaccess文件中中加一句2 N' m, W- X( o/ P  e
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码
7 I+ k" w7 p) {
IIS方法& c3 h( K- L7 p. G: T2 J2 W
在web.config文件中加
  1. <system.webServer>& Z# j" y7 M1 P3 v1 v. S
  2.   ...( u: U9 ^, y  e$ x' z* q' k0 H3 j7 S
  3.   <httpProtocol>
      e) A' M, }/ ^% u0 L
  4.     <customHeaders>
    3 W# `/ [" H( Y! j. s+ M# {9 l$ y
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      
    7 Q- h% u- I% W
  6.     </customHeaders>    : @, Q/ ]8 ^9 A/ D
  7.   </httpProtocol>  
    : S% k" k) X$ a( l% h# }* c
  8.   ...3 h) Y$ r/ o( {0 D) q: w2 u! q* t0 l
  9. </system.webServer>
复制代码

! n4 u2 M" r5 u2 b# ~' i之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。
2 E" g0 Z$ j: |- W- i1 A1 a' T& u5 ^
3、推荐解决方法。
7 `- m( J# k6 p7 Q% i7 c! k, E
  1. <script language="javascript">  
    & y8 ], e2 Z! {5 n
  2. if(top != self){8 J4 y5 w! v% Q; C3 Q
  3.     location.href = "http://xp6.org/iframe.html";  
    1 l. w5 ]( ]+ }
  4.     top.location.href=self.location.href;
    . h' |( t. l; h* W% R
  5. }  
    ) R; G; c* i, d: o* Z1 Y$ ]0 S+ r" y  D
  6. </script>
复制代码
! V- c6 R; z' K. |; X- S9 f
将上面的代码复制到需要屏蔽页面<head>里面加载。- N1 |& q% `- x. i6 @. Q
制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。
, F3 d; M8 r* H3 T2 ]/ ?原理:# C. j8 u- I. O, ?( z# U3 B0 e
第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。
1 i4 O' @9 w* y( g: y第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。$ j/ W1 G% t8 m  u3 A3 c- @0 s9 N2 W
目前测试这种方法没什么问题。8 Z9 m; j+ H4 Y3 b0 \1 t) _) q
, e& k2 Y! `7 ], K
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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