搜索
查看: 14364|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。; t* Z! r/ c  W5 e0 Q2 X9 i
这次讲一下如何防止自己的网页被别人iframe。
+ `* ?) H& O* `5 |9 K( Q; Q" M3 N
! {3 [; e0 W* |. C* l" B$ K9 ~6 G1 e1、这些方法都可行,但不是太可靠。; c7 i3 F; u& R  o: s9 _; K
  1. <script language="javascript">/ h+ `% r- r# s4 a1 k
  2. if( top.location != self.location) top.location.href=self.location.href;; C/ k$ b" O9 @# Z
  3. </script>
复制代码
& g! w, _2 Q' Q
  1. <script language="javascript">
    ( b$ A/ C8 s- f! M! A
  2. if (top.location != location) top.location.href = location.href;
    , n9 l7 h# {- w$ g/ L% }! `! p* {
  3. </script>
复制代码

6 z4 r0 T& }0 F  U9 n: s' t
  1. <script language="javascript">
    / l( u+ d0 a  t' `3 t# W+ [2 X4 k
  2. if (top.location != self.location) {top.location=self.location;}1 G; p8 \' F! J; F$ L. k0 ~
  3. </script>
复制代码

6 r' ?& p- W" O3 O+ |' f
  1. <script language="javascript">0 f5 t! S5 R/ @  M- u' t
  2. if (top.frames.length!=0) top.location=self.document.location;6 Q! J9 C8 s2 f7 x- ?
  3. </script>
复制代码
不可靠的原因:, D- f2 a, F0 P) {
当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。" s' ?+ W# g+ w5 i. `
  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>
    6 A7 `. k7 N- r% z& e/ z3 w3 l
  2. <script language="javascript">
    3 l8 ~/ s- f4 {0 Y9 r3 f
  3. var location="";
    4 z; T) r* L2 J' E- a' A
  4. var navigate="";+ w$ f0 J7 m) }( r! g- \) e, A
  5. frames[0].location.href="";
    5 T) r. ?) h8 F, X
  6. </script>
复制代码

6 L( T  S; l* @& }& j2 A- n" a
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码

. B; E7 D- E0 ~( j" g& l& j$ Q# J1 s2 P; Z. _" P) m0 t4 Y
  1. <script type="text/javascript" charset="utf-8">
    7 N) t& q! ?# {# N! L  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: N4 |2 v& L9 b: r6 l
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。
) Q% t/ j/ ~- ~" N; v0 i3 hMeta标签方法6 |: y/ Z4 D3 W; |" Z
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法
* r5 t; x* o  v5 i, b
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法- x: q0 ]2 R0 A% O
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法
- ?3 A4 q! w- F& Z$ E+ F* \
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码
) n5 r/ p+ {0 x8 r
.htaccess方法
" K( t/ i! B8 v, v- W在网站根目录下的.htaccess文件中中加一句
7 s. r3 w- w4 \
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码
) k# t8 Y( J# U- V+ O+ @+ J3 T# K
IIS方法
2 O# t5 _! X2 q# Y' _在web.config文件中加
  1. <system.webServer>; G+ o8 j9 `$ l* o) s7 b
  2.   ...! q/ N- E3 Q4 s5 |9 ]; x: L; t
  3.   <httpProtocol>1 U! Q4 R% [$ }9 `0 u4 F8 t
  4.     <customHeaders>
    ; ]% q; }+ k* L/ o$ L9 @! V  R
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      
    * ?$ M& k( E+ N" A
  6.     </customHeaders>   
    7 s) G8 J+ \0 M) r+ X/ B
  7.   </httpProtocol>  
    # O# _  C9 f4 J7 z  x7 N' F
  8.   ...' k% x/ R# v  B* s" V
  9. </system.webServer>
复制代码
/ {* P7 f- d8 H' D
之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。
: ^" w# x% s* B/ x
% B( g" p$ V8 Q6 Y6 z  ^1 O6 u: {) F3、推荐解决方法。- e2 A" x# J8 t0 c+ k8 t& w
  1. <script language="javascript">  ! ?9 Z) r* c  g' W/ b/ o  n
  2. if(top != self){8 |" i, @7 [9 e4 z- L3 W" _
  3.     location.href = "http://xp6.org/iframe.html";  - F! H2 e( n0 Y5 C
  4.     top.location.href=self.location.href;
    0 ?) S( A% J! ^  q6 |" U% L
  5. }  
    % C, b0 h$ O: H: [# m
  6. </script>
复制代码
3 t& `: [+ o$ I: V
将上面的代码复制到需要屏蔽页面<head>里面加载。
+ F& `( }7 w. m$ F) r制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。0 a- h5 H. Z- j' T. @
原理:1 I2 q% F5 y) S# c& a% g5 b( w) x
第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。
$ I  ?3 K5 \% x$ T) f! r3 o# @5 N第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。; r' a! o$ w' L' Z
目前测试这种方法没什么问题。
+ E5 o3 @1 U! S$ h0 y; N1 v6 l+ d7 M2 X+ k
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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