搜索
查看: 14796|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。; a# I% ~, m6 c
这次讲一下如何防止自己的网页被别人iframe。
- D/ J" X- |6 c0 J8 G& y2 {
! T4 e0 c+ `, W: d1 m& N' |* }, u1、这些方法都可行,但不是太可靠。
0 s: ]# O/ y# w, v- C, e
  1. <script language="javascript">
    2 o$ X* o; v  y/ b8 Y$ d$ g
  2. if( top.location != self.location) top.location.href=self.location.href;
    + ~+ g/ p9 k5 p# V2 u
  3. </script>
复制代码

$ A( N  f) V" E! j0 J/ z& f
  1. <script language="javascript">+ r& T$ P2 V. K9 x
  2. if (top.location != location) top.location.href = location.href;
    - _2 P& H' c4 s& ]" N
  3. </script>
复制代码
$ v% n6 \  Y$ U4 ~1 w/ Y9 m
  1. <script language="javascript">
    0 f8 V  Y+ \! Z9 y7 |, ^
  2. if (top.location != self.location) {top.location=self.location;}) a$ K! b' q+ M  y, }# m' g
  3. </script>
复制代码
2 L6 D* m; x* F1 w' k
  1. <script language="javascript">
    1 R" r( M* Z* L% J1 ~/ N6 H
  2. if (top.frames.length!=0) top.location=self.document.location;) v! c( W; y# U
  3. </script>
复制代码
不可靠的原因:; e' E% b$ j3 c4 z, G  j& P
当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。4 m7 d# u6 A! K: z% z
  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>( o# O3 U0 G2 i1 m
  2. <script language="javascript">
    2 ?# z% N8 y9 |5 d! x
  3. var location="";
    4 ~+ J, z7 k# ]0 U
  4. var navigate="";: V( q* B% K1 w. X
  5. frames[0].location.href="";: d1 F. _' U+ ^/ w0 Z! h
  6. </script>
复制代码

7 ?, a) {  G4 h; W- [2 J
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码

, O6 L" x! O- a* I; @# w7 @: \, G6 ?% x9 R: V" z
  1. <script type="text/javascript" charset="utf-8">9 x7 u/ ]# J/ o% U
  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>');
    ' i4 l# a, p( |! q4 }
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。
/ m0 z2 h, l# G& v( I8 k' t1 mMeta标签方法
% F5 {' b5 [, n# e7 U# b6 ^1 Y
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法
- n: j  U' I# @; v* v
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法
6 N6 d* q. B, j0 `
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法
+ }! H5 C! p8 k0 u. K/ a# i
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码
$ M3 U( s/ _# ]/ i
.htaccess方法9 K5 z- t/ I+ m4 L5 ~# C6 U* _
在网站根目录下的.htaccess文件中中加一句
# T! v2 ^3 @/ O) R4 S: b
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码
# G- U# j  s% j9 q; s- H9 @
IIS方法, \8 Q( D9 k0 N' l+ ^
在web.config文件中加
  1. <system.webServer>
    # ]% h. U+ [$ @# k
  2.   ...: t  E' K6 t3 c( @3 T3 p% M
  3.   <httpProtocol>: T* |7 G3 C$ y( W1 l) Z& }! h
  4.     <customHeaders>
    ) t$ l) E- X/ q6 e
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      ; j0 ~$ L& S9 W! X% E" v4 G# z. Z
  6.     </customHeaders>    0 R$ ?# J7 ^4 C- Y8 O8 W
  7.   </httpProtocol>  ' F7 M. u  |( ?/ _$ |0 r# S
  8.   ...! y0 p( @; w/ S4 a
  9. </system.webServer>
复制代码
4 `+ O0 K: i3 E$ U/ Z1 _
之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。$ B- f5 b3 L( v

$ H+ ~! t! W& L5 C3、推荐解决方法。
4 }! ?* y) L$ M! N0 A2 X
  1. <script language="javascript">  
    ) f& a4 y: c" M/ ]. X. T
  2. if(top != self){
    5 {; ]# Z8 t5 v2 ?7 r
  3.     location.href = "http://xp6.org/iframe.html";  
    6 }- x' i+ {# d' @
  4.     top.location.href=self.location.href;# M4 |* h( M2 n9 D0 c8 D
  5. }  
    6 s/ C0 \7 r- c: _+ F" Q: H
  6. </script>
复制代码
+ y/ m2 U% i3 l) W0 T- i+ y3 O! }
将上面的代码复制到需要屏蔽页面<head>里面加载。; ^1 D8 Z  \" c' n' g1 [
制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。
- I( W" k# T; I0 y* Q1 G原理:% z, c6 _' k5 `$ O! I& k2 S
第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。
# c/ Z- ~3 a$ L& Z: P第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。1 [- F& z( X$ L2 u2 G6 h5 r, h
目前测试这种方法没什么问题。# P; G% e2 q5 ], r+ @$ W

7 s& ]8 C$ f) C7 }# \
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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