搜索
查看: 14389|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。
- ~# \: J$ D8 Q5 }这次讲一下如何防止自己的网页被别人iframe。
9 J: s6 y+ D' y: _7 _/ G7 Z3 ^$ j8 H+ ~6 T# \
1、这些方法都可行,但不是太可靠。
$ n2 v  t( e- @
  1. <script language="javascript">
    & o! l: g, M$ ~$ c
  2. if( top.location != self.location) top.location.href=self.location.href;$ d5 d- [: }( d: F% r
  3. </script>
复制代码

% Y& g. F9 u* i' K, r
  1. <script language="javascript">
    : D4 z- |2 ?1 M/ u4 w" \5 C$ c
  2. if (top.location != location) top.location.href = location.href;8 }; A% S# v+ W8 B% ?
  3. </script>
复制代码
, Y4 I( i3 {. K+ a% ?! e
  1. <script language="javascript">; h- `) {! ^: g8 I! X
  2. if (top.location != self.location) {top.location=self.location;}
    : M0 p6 y0 B! c+ X7 z6 R" R
  3. </script>
复制代码
/ `/ S( Y+ s, I, P7 _& @4 e
  1. <script language="javascript">7 Q) I9 |4 V0 Q, h# X2 b5 w0 x
  2. if (top.frames.length!=0) top.location=self.document.location;
    3 A- ^6 X8 g( G
  3. </script>
复制代码
不可靠的原因:6 p% T" j+ U5 v5 v( P
当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。+ C$ f$ F  `# n: O0 M2 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>. Z3 z! f, Z: X& K3 ]0 Z7 J. Y
  2. <script language="javascript">   e8 l$ {% z7 f3 I, X) c; L: b
  3. var location="";$ @8 k" c* M4 b
  4. var navigate="";. w7 Z7 _- K; q7 F; k# I7 Z- ~% L
  5. frames[0].location.href="";
    " W. ]1 g3 l( j4 k  [2 |
  6. </script>
复制代码
4 {# N" l  q* Y8 D
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码

- O! s2 J6 G% c+ a: J. m' t
5 r% h% G& E# `
  1. <script type="text/javascript" charset="utf-8">
    . p% Q7 l+ H0 X& q! w
  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>');
    & N+ N2 w9 P* p0 r2 H$ v# t
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。9 K7 A% c$ Y8 e" S" f! r
Meta标签方法
8 e- S  o, |- E
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法
! {  I4 n- W6 Q/ A0 [
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法
% v- J' q8 j1 T+ x- ^0 Y
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法
( F; i  a) b0 u4 x0 D
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码
+ x3 v7 f+ }6 Z- P; t; b8 Y& _2 i2 @
.htaccess方法
  p8 {1 Y( R8 c3 H* E0 P在网站根目录下的.htaccess文件中中加一句% Y9 d/ k: `8 R$ y
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码

1 s) }: O4 c5 L1 g, {4 DIIS方法5 C" ]3 H3 I- t+ i' f# j2 g6 Q, {
在web.config文件中加
  1. <system.webServer>9 }# I/ T1 x2 k/ l+ b
  2.   ...
    3 n! b8 g4 N, j' H1 h: H: w2 H3 L  h
  3.   <httpProtocol>
    : F' t- Z8 C# T* n9 F+ ^9 a
  4.     <customHeaders>
    0 U  C) U0 `; g# l' M% J
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      
    . e5 n  G* E* `, `7 x6 t0 y, D
  6.     </customHeaders>   
    4 g4 i4 j* `' n2 z2 G* ?
  7.   </httpProtocol>  
    . v. J* i( x/ F# l, C
  8.   ...
      O3 b* L/ E' ~3 A# m+ l7 s* q1 y
  9. </system.webServer>
复制代码
+ H7 Z# ]7 G0 v4 l
之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。: ^) f5 o+ h  U% B
; k, T+ f  l# W( F; V' B
3、推荐解决方法。
' _  J: B: V" l; H5 f6 n# D% @' c
  1. <script language="javascript">  
    - E. t4 y1 w5 C! f. N' N0 ^* n# L! ?
  2. if(top != self){0 I  h- H- x+ Z2 l  C0 O
  3.     location.href = "http://xp6.org/iframe.html";  ; D$ j# A; G: [
  4.     top.location.href=self.location.href;: o) P3 I: ]7 M! w# b/ S6 U
  5. }  
    $ t7 q( m; `) q
  6. </script>
复制代码
1 g; A- z9 I1 k
将上面的代码复制到需要屏蔽页面<head>里面加载。
1 g( B+ c; h$ q# e/ ^1 e制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。: R& R1 R* o5 y0 T7 S) C# w
原理:& c' ^6 _8 U: r4 I' k( |9 U
第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。. ?7 w$ _" X$ y# n2 f5 R
第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。
$ H! r% ~" T$ z& k3 a3 w' {+ X& G( G目前测试这种方法没什么问题。5 ~, J+ t( v! \
  e* j2 }+ p2 l; p7 X: g9 O2 M1 s* f
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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