搜索
查看: 14633|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。- c) I' g0 Z! Y" z' \7 D* d; y
这次讲一下如何防止自己的网页被别人iframe。: a: h) q3 V# E5 ^6 o

* H+ L4 v. b* A; ^6 H1、这些方法都可行,但不是太可靠。
7 z1 B6 ~# e- ~& V) E
  1. <script language="javascript">
    % q5 p1 w2 d: j
  2. if( top.location != self.location) top.location.href=self.location.href;
    ! z3 h8 f) d2 @0 x: Y1 ~$ A: W" x
  3. </script>
复制代码
* ^: n+ Y0 q4 ]. U# f6 a
  1. <script language="javascript">% x7 B6 y& @0 y$ E
  2. if (top.location != location) top.location.href = location.href;$ J) X. k; J) X$ l! h* A+ I
  3. </script>
复制代码

; s4 X% x, ^: v7 y
  1. <script language="javascript">1 k8 ~6 e$ P  \+ y2 V
  2. if (top.location != self.location) {top.location=self.location;}9 z3 E* V3 Z& [9 p  @
  3. </script>
复制代码
: s8 p% y: `9 q. M
  1. <script language="javascript">
    * W+ i- j4 c+ c) g9 p, I$ i2 p
  2. if (top.frames.length!=0) top.location=self.document.location;  i3 J6 }, D) f+ |# _$ R. T' E
  3. </script>
复制代码
不可靠的原因:
: S1 s. E  E2 ~0 i当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。" h1 D0 H4 d  ?4 M
  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>$ A$ E8 x/ q0 X0 a1 _
  2. <script language="javascript">
    / E; p! z/ E+ n  N5 l
  3. var location="";# k# u: l' O& b9 O+ e2 J
  4. var navigate="";
    4 E7 R" E8 b* f9 K  l; h
  5. frames[0].location.href="";, ?9 S0 [9 k6 R4 u3 J( E3 Q- B* H, l
  6. </script>
复制代码
* y9 M& `1 W3 x/ _2 ?" @6 Q+ \
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码
, h. a4 P/ {* P) V3 i; p9 O
9 f, y6 p) I+ I
  1. <script type="text/javascript" charset="utf-8">
    / C* t: H" _$ n
  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>');
    ) Z6 Y! B# m/ ~4 q* C' ^+ [
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。
) L1 C( b& I9 k, n" e3 S0 eMeta标签方法
/ F  M) h1 Z: y
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法$ j9 ~* A8 ~# p: M2 u( A1 Y
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法3 Y3 d% M+ L; g- z7 C' P( {
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法& d7 X% t- g2 b" z) h
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码
: ?% A  e; Q1 h) b
.htaccess方法. c+ N' U; n% @
在网站根目录下的.htaccess文件中中加一句
/ s2 n4 g( @7 l/ s. q1 s) Y
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码
% [) i2 ?5 `; @0 d& X
IIS方法3 }: m+ B# N6 _; I
在web.config文件中加
  1. <system.webServer>
    # I) X# p/ ^" Y
  2.   ...
    5 n, I5 M( U  V6 |1 j; p7 K
  3.   <httpProtocol>
    7 N1 f- W/ F8 l- a. O( D
  4.     <customHeaders>
    2 g# p$ P6 t0 a6 W: P* x% P5 X5 f
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      
      m& P! ~; I! h  k2 f2 f
  6.     </customHeaders>    / Y) r! l! e3 y( d3 m/ N) F$ s
  7.   </httpProtocol>  
    " ?" [& `+ V2 z  p. I- Z
  8.   ...; V& J3 X' v0 a# `2 N$ m" R
  9. </system.webServer>
复制代码

8 C& ^3 _$ C0 Q& S之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。/ r: G- L5 ?% [+ \! M  k
7 s* n  T* \/ Y) F; G* w" i
3、推荐解决方法。# k" y& p- q: }$ _+ m
  1. <script language="javascript">  : K- ^; C* |& x/ K( F
  2. if(top != self){5 o( n8 T# C- y; Z
  3.     location.href = "http://xp6.org/iframe.html";  " g2 l0 G' u1 s
  4.     top.location.href=self.location.href;
      Y0 K% S! w4 q8 G
  5. }  
    ) J! Q, V; t8 `" f4 ^
  6. </script>
复制代码

* S! i" l) M& F1 K将上面的代码复制到需要屏蔽页面<head>里面加载。
- Z" ]3 h  ?. c! Y! y2 E制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。0 }. C( j5 n: }% C2 ^
原理:, f1 I6 ]' x2 G, h; j
第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。
& P& C% {  P) u第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。7 q5 J6 Y5 l1 F
目前测试这种方法没什么问题。, O; J" C  {! w) s
) ~5 t9 P' w% H; m9 J
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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