搜索
查看: 14709|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。
+ |: Z, L! c3 ?这次讲一下如何防止自己的网页被别人iframe。
* e1 a, [! e: u5 H3 o/ m4 E6 p3 i
4 P. r  _/ `9 G  {1、这些方法都可行,但不是太可靠。& ^& C8 D8 i: X9 W* N6 q% L3 S% {
  1. <script language="javascript">5 V: o4 R" C' q- B7 g: h$ y  ]
  2. if( top.location != self.location) top.location.href=self.location.href;7 N, r/ I  w4 G: R& X- ?+ `
  3. </script>
复制代码

- T& P! E: ~7 L; _7 [3 o8 g. k
  1. <script language="javascript">8 t( ]( i' J, c/ v
  2. if (top.location != location) top.location.href = location.href;
    0 a/ l; j6 y' _4 w# d5 G( G
  3. </script>
复制代码

: T7 T( X8 [& b$ z* e: ~
  1. <script language="javascript">, ]  T- Z+ S) o; r9 w
  2. if (top.location != self.location) {top.location=self.location;}" d( [& \- i( O6 V$ z
  3. </script>
复制代码
0 Y2 e( y9 \( }) H. Q  q1 {
  1. <script language="javascript">0 F% U" Z$ [8 H! H8 g  ]
  2. if (top.frames.length!=0) top.location=self.document.location;
    9 |' H- U) Z) Y) a9 z) @$ R/ e
  3. </script>
复制代码
不可靠的原因:# f  C- d# S$ y( V, y0 X
当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。: _3 C( U- v, s) q0 q% o
  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>
    1 |: f: ?: e' \" e$ N8 _. Q, ]
  2. <script language="javascript">
    $ Y# S0 i/ y5 ]$ C
  3. var location="";4 N$ o# c8 `; q1 r- |
  4. var navigate="";+ A! @" K5 M; P( O) t  [
  5. frames[0].location.href="";
    ) i. l* Y. h, x
  6. </script>
复制代码
9 v  n) @9 [- N* }4 J% I/ E
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码
9 M) A' k% e  Z& l6 Q( A/ _

4 `  x" z5 v$ _/ Q$ e/ A% S
  1. <script type="text/javascript" charset="utf-8">
    * O4 `4 Z( T, D3 h9 L& ?6 m7 e+ d
  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>');% V5 V6 _: B. G0 Z$ P
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。: U( J# v- U" H" l2 F8 G
Meta标签方法9 y) a7 e7 n1 ^  B1 V
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法# u- i7 i* U$ G! H% z  L1 d  }) n
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法
7 I+ [9 N3 x( a( \% Y* B6 Z
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法
8 [: B0 H* }+ r- ]5 T8 x
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码

4 I* Z  q- A" \. O6 v.htaccess方法
9 v: q8 P( Z! X& u3 N" |  q; H* Q在网站根目录下的.htaccess文件中中加一句4 r* C' L/ P/ m- \. D: s3 m4 t, X# {
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码
; l0 o# C. s; T
IIS方法3 F7 k( Q% [$ I6 g
在web.config文件中加
  1. <system.webServer>+ ?4 |( [; i- g. F: j
  2.   ...+ W# u9 C# ^* U8 o3 ?
  3.   <httpProtocol>
    8 q  m1 }- E/ O2 R, a# y
  4.     <customHeaders>
    ' a) q# F6 e+ F+ [- Q/ @1 ^
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      ( z) M* H$ D3 K
  6.     </customHeaders>    ( }8 d, }! a0 H" `/ ?+ z) W
  7.   </httpProtocol>  
    4 |' m: s- A3 h
  8.   ...
    * [0 x+ _4 f9 F! s+ n1 o3 n  \. o
  9. </system.webServer>
复制代码
" ^$ |4 O1 c5 G6 m7 z" R5 N
之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。
+ E2 v" W* ~) x8 @
/ y0 |- L% Z) R0 Q0 E6 o3、推荐解决方法。
& g; f8 r1 ]. E" G
  1. <script language="javascript">  
    1 f$ I; o8 W' ~. k
  2. if(top != self){6 {. F) p+ F0 a+ ~/ j; |9 J$ a
  3.     location.href = "http://xp6.org/iframe.html";  5 P' M- l. d( Y
  4.     top.location.href=self.location.href;( w9 {2 x- m; I
  5. }  
    3 _- W+ C. u: |( Y, [# ]
  6. </script>
复制代码
7 @) P2 W$ w& N" f% Y" z) |
将上面的代码复制到需要屏蔽页面<head>里面加载。
! H  o7 R1 ?0 F, v% x制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。
0 `4 O/ Z9 B0 Q& V( T! R原理:6 X) w' U, o( s. n" ~: j4 H/ I
第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。
( W2 Y5 B6 Q9 m  j  _0 f! J8 I第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。3 Y# b' g8 B. y0 F4 E
目前测试这种方法没什么问题。
7 B1 j5 s+ ]; p* U) V- N' W9 Y* c, [, M: F: s* W, M% q" a& S
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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