搜索
查看: 14416|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。
, o: N* x  q4 \这次讲一下如何防止自己的网页被别人iframe。
5 j& U$ N, U& W; ?! c
" X3 o3 u% f5 _' C" R+ n8 A1、这些方法都可行,但不是太可靠。) _/ j  }4 U2 Y$ x; l
  1. <script language="javascript">
    5 `5 o) z4 |. H5 m& a" E& _
  2. if( top.location != self.location) top.location.href=self.location.href;, _: G% d! a8 i! p! O7 @7 |
  3. </script>
复制代码

- a: C5 x# |5 t  }' Q- m& l
  1. <script language="javascript">0 E  n$ B# y% ]4 g* C! I( v
  2. if (top.location != location) top.location.href = location.href;  W* |; k) d9 O1 D
  3. </script>
复制代码

9 T9 W. a/ j3 a  x
  1. <script language="javascript">
    3 G, X3 F2 B- Y  s4 f
  2. if (top.location != self.location) {top.location=self.location;}( m: U$ y* T) x8 i* [5 J
  3. </script>
复制代码

/ @5 U( T! R0 A! d9 C  [
  1. <script language="javascript">6 n  m5 e( ]9 ^# ~2 g7 y) v
  2. if (top.frames.length!=0) top.location=self.document.location;
    ! S. u5 ?- j* e
  3. </script>
复制代码
不可靠的原因:
9 N* M0 u- L+ {0 t* m& d: @& D当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。
4 e7 v: C3 j' {' S; x2 w! A9 ?$ y
  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>
    : y# H. R3 I: W1 z4 b4 {
  2. <script language="javascript">
    # [7 E' t+ M: R
  3. var location="";1 H, r) Z  D, ?* b/ s8 r  c$ p
  4. var navigate="";4 p7 r0 L  U! ^
  5. frames[0].location.href="";- A$ E  y( J! e" w6 r# I) y- g
  6. </script>
复制代码
2 x0 f- m( o$ X
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码
: `7 G  s- Z7 I4 Z/ D/ n
3 ?' A5 j+ t* m) }* l: v7 b$ y
  1. <script type="text/javascript" charset="utf-8">
    / m9 [0 \7 B- Y* H; s4 b6 G
  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>');
    0 ~" z" T! u0 G
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。
2 o' ?2 i" X! p0 X( i" V* LMeta标签方法
/ E; L$ L- M7 K( ?. B; r
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法4 a" L) J, Y! x& P$ d; Y
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法
# Q" B4 O: Q( y. z% ]3 j
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法
( k% G0 L! G/ M# ^, O4 u; _+ p8 I( _
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码

; M/ o% \, b- ?, ^! U2 v.htaccess方法+ R. t$ N" H6 u: w
在网站根目录下的.htaccess文件中中加一句' b5 y1 F$ E6 O# W8 R0 W% o
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码
7 |9 ~$ q* |, _
IIS方法
( I5 ~. J0 f# p在web.config文件中加
  1. <system.webServer>
    ) I" @$ E* k$ Z0 z5 H' ]
  2.   ...
    7 ]! E8 L) o; [0 L+ X5 L1 E
  3.   <httpProtocol>
    : P( [$ h1 f# V1 n
  4.     <customHeaders>
    8 j+ i4 e9 f- ]
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      
    5 K, I/ ?% ?" ?
  6.     </customHeaders>   
    6 K8 }, ^6 K% N1 ~: H  B! p
  7.   </httpProtocol>  
    ( p3 z9 j$ j& a9 Q+ G
  8.   ...
    ; n+ T7 t- K2 v% k( X$ O" t
  9. </system.webServer>
复制代码
* L1 }8 p4 |6 a1 H& t  B  C
之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。
+ d& e) x( N; g% y, S: ~- \5 j
1 R5 J  H+ R2 t+ F3、推荐解决方法。
5 p3 L6 c5 u9 R2 h% b& G' E4 T
  1. <script language="javascript">  1 E8 ~0 X7 E+ Y: [7 E1 Y& S
  2. if(top != self){$ r7 ?9 F' ~3 g) X4 o
  3.     location.href = "http://xp6.org/iframe.html";  
    6 k: g! B9 c  N/ s8 \2 `
  4.     top.location.href=self.location.href;* h2 l1 K/ a( I
  5. }  
    6 C2 B' s0 A' Y1 e! L  `. p
  6. </script>
复制代码

2 P% n4 n; D- [6 W0 ~) _. Q! J将上面的代码复制到需要屏蔽页面<head>里面加载。  p) {4 y; `5 ~0 w! u% X7 J
制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。
0 g/ E; b; Q4 t& U# g原理:; u! o  D8 r' z9 ]" y
第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。
$ @! P7 K3 d; g& X5 ~第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。4 w' o# L; i2 V' X, s* g* ~$ z1 S; _
目前测试这种方法没什么问题。
% z0 b( F/ ]3 N5 n6 \, Z4 N/ J
$ J2 C! s1 e/ Z( K" n/ w' J) N
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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