搜索
查看: 14708|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。
% L! m% J( n# x1 A9 p2 u* w$ z这次讲一下如何防止自己的网页被别人iframe。" ]5 [' k5 @, z$ p0 A  n5 A
5 p: n& o: g+ S, q- g& H2 d
1、这些方法都可行,但不是太可靠。1 H6 O" b9 ]- |0 G  K
  1. <script language="javascript">
    ) U* e* M: L7 s- R( M, M
  2. if( top.location != self.location) top.location.href=self.location.href;1 ^+ K- Q+ U8 w: U6 u
  3. </script>
复制代码
5 n6 T8 y) J3 N( j- _, v$ |
  1. <script language="javascript">
    $ a; M- W0 {; K* M. C4 U" J
  2. if (top.location != location) top.location.href = location.href;
    $ _! ?* y- J& [5 }
  3. </script>
复制代码

6 s  e3 K' k$ B" d( U
  1. <script language="javascript">4 T8 Y$ }( l( s  _3 b
  2. if (top.location != self.location) {top.location=self.location;}; G! Y8 W* F2 n% Y* @+ ^
  3. </script>
复制代码

1 p& ~! W9 i' j& [( s
  1. <script language="javascript">3 @* }% {' z. q( a& s3 }5 [2 |% @
  2. if (top.frames.length!=0) top.location=self.document.location;0 o7 s3 T' ~$ R) @0 p
  3. </script>
复制代码
不可靠的原因:
- v4 F" V3 g; p( e6 u7 O, f- G当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。( V$ `. R0 W7 }% P/ I7 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>
    0 C, ^* Y+ n5 N% H
  2. <script language="javascript">
    0 Z6 x. O' V, ^
  3. var location="";) c. k. ^! a. J1 L4 P: e1 f
  4. var navigate="";
    8 q# d, X& u4 ]9 }( M
  5. frames[0].location.href="";$ U: v! o! [2 x$ c& g  D" P" n
  6. </script>
复制代码
$ X5 s1 b# y2 R) A5 Z6 p4 |
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码
8 G+ i+ I& I: n& p! g( X
) z: r; W8 q! ^) R
  1. <script type="text/javascript" charset="utf-8">
    6 [7 [; W& ?7 t0 S, J0 l3 i8 j
  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>');
    / R  X- h! F5 ]5 H7 L
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。) q4 ]+ r  d" i" z; U
Meta标签方法1 F" x, P/ I; l. x, o6 q0 k
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法
5 D, M9 r+ j* d# T  ?: c
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法
3 r1 |" V" J5 j" B3 [/ G( t$ [
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法. c* n2 K. n& E9 O* M0 T
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码
0 v0 X. o# M& o' e% G- B: R3 o- z
.htaccess方法3 n8 {6 S% z9 Y% [& D3 n
在网站根目录下的.htaccess文件中中加一句* B; m, J; E; h1 w
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码

4 e5 F( ]* v' D6 ^! n! SIIS方法
7 x: K3 A7 D- R" ]8 A' f5 f在web.config文件中加
  1. <system.webServer>
    % X% y" w$ G& B4 n: f$ w9 j+ a. l9 e
  2.   ...9 b% F: y9 _% ~8 U2 q. V' \
  3.   <httpProtocol>
    # m9 h2 C4 ^" v
  4.     <customHeaders>
    ! A2 m2 s' J) r
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      
    $ F9 `& P$ Y+ [# [  @- B
  6.     </customHeaders>    6 l/ P7 w* p0 p1 w& u: I
  7.   </httpProtocol>  
    , [' i/ l% ], n
  8.   ..., M8 ]4 N# }3 d) c
  9. </system.webServer>
复制代码
$ S$ @1 e# u/ k" b# h
之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。
4 @6 g3 ]% H9 p: G( U2 l, j$ z/ W. Q( L6 L
3、推荐解决方法。
: q! l9 |" g4 j' P+ t2 z- V6 u, A
  1. <script language="javascript">  + Z: `- H! Q4 H, C
  2. if(top != self){8 c: n5 d' r+ x" I" {
  3.     location.href = "http://xp6.org/iframe.html";  * @0 g) Z3 k; ~6 {4 t
  4.     top.location.href=self.location.href;
    7 t* y4 @" D  m1 `" r+ r, J0 Z% X
  5. }  8 o7 d. q, D8 ]: `
  6. </script>
复制代码

" Z3 h1 Z3 i5 K& h1 V! a将上面的代码复制到需要屏蔽页面<head>里面加载。" i& q" x( D; ]& ]" c) e
制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。
) w1 f# J1 p. F; K3 I7 W原理:
+ f8 V/ J/ {: G3 D第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。
- q- z. \; ], ~  e5 O: m$ `; o. {: @第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。. c" d8 `' o" L: r+ o' C! j
目前测试这种方法没什么问题。
# s" L% @4 H# A# r: C
3 C3 C. H; d9 ~9 Y2 \
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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