搜索
查看: 14601|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。# C$ h' o! N. e0 Z+ J
这次讲一下如何防止自己的网页被别人iframe。
- m) d! R- s8 }, q) g) r( P& ~6 v4 E1 l
1、这些方法都可行,但不是太可靠。
! J( P4 h$ s* t  Q( C& c
  1. <script language="javascript">% u9 m. Q! R; o8 E, \
  2. if( top.location != self.location) top.location.href=self.location.href;5 ]( Y# a, b6 u1 ]) o
  3. </script>
复制代码

/ u/ ?0 _, U3 u4 [6 u& Z- A
  1. <script language="javascript">7 i3 i& u& z6 d/ Q  b. O
  2. if (top.location != location) top.location.href = location.href;8 R* c4 w: O6 Q$ h; d0 R) m# o6 m- I
  3. </script>
复制代码
8 a! w- r5 b+ g$ ?% V- H4 H1 B
  1. <script language="javascript">  P6 W. A2 G2 h. b: C; q5 ]) ?
  2. if (top.location != self.location) {top.location=self.location;}
    $ D; W& i3 s5 w: Q
  3. </script>
复制代码
- }3 _1 L8 G% p# Y; J, B# B% v
  1. <script language="javascript">
    , H$ I7 D) r1 I( R
  2. if (top.frames.length!=0) top.location=self.document.location;* o( Y8 H  s; y
  3. </script>
复制代码
不可靠的原因:& ]  N4 |5 J# F% f* b. {, v. j) h
当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。4 i. ]# |6 f9 Z: e: p( p5 O9 \
  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>
    3 ?( z0 {4 B4 n  d
  2. <script language="javascript"> 2 i" Y6 ^9 ~' E! i6 _: J
  3. var location="";+ l# n# J  W; P9 z# K+ q
  4. var navigate="";4 l4 r' P+ E# Q1 Q  `1 W
  5. frames[0].location.href="";
    ' _; Y! |' {8 U
  6. </script>
复制代码

  P4 h1 ?$ |4 j  ~" V8 t+ R1 W* F
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码
3 ?9 j9 O0 }: }8 y7 f" I
5 I' y* q6 c9 k" t- n& n, @
  1. <script type="text/javascript" charset="utf-8">3 A0 r; H1 ?( l. B" C
  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>');
    ; L$ O9 k% O6 Z2 ~( o' B" A4 d
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。6 O2 u: ^6 e$ ^  `8 i
Meta标签方法9 ^; _$ d$ [$ B0 d7 r5 }! |6 b* v) e
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法
+ F$ l% R! O, G/ n$ y
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法
$ ^* c0 d+ {  W) [! X. b
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法
' }' {' ~0 H2 u! f) d
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码
7 g- T$ L/ m1 H' ]* \1 U' E
.htaccess方法
# Y; Q4 i0 B$ c7 t9 T# g9 g在网站根目录下的.htaccess文件中中加一句% Z9 r$ g& }7 @9 F6 `7 q
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码

9 b& p& q6 j4 F5 XIIS方法
" A# n, g6 P( e* r/ s5 @5 M' y7 y在web.config文件中加
  1. <system.webServer>
    ( b9 W8 I( s9 B7 k/ p- \: C8 G
  2.   ...+ }$ m9 d' {/ f3 k) [  J( }
  3.   <httpProtocol>9 Z) Z+ I4 s% L' g" R( A8 W4 z. l
  4.     <customHeaders>
    % r0 v; c0 ]( s
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      ) W; x! j1 ]- e% m( p2 i
  6.     </customHeaders>   
    7 k6 A( z3 a1 i/ @" x+ O9 R, i
  7.   </httpProtocol>  ( v% b4 Z% w8 v3 Y
  8.   ...
    / D6 |3 X' s6 D, ]: m
  9. </system.webServer>
复制代码

% l' h3 [0 Y8 ?# Q2 }) p0 r之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。# P& U; d$ R1 {2 g% L
! a; C" U$ [3 E" O& u
3、推荐解决方法。
( q+ y; k  u) `4 M
  1. <script language="javascript">  - ~" @) O1 j# i0 m/ s
  2. if(top != self){- ^  r) Z$ H9 P% e4 h' e7 B6 e# }
  3.     location.href = "http://xp6.org/iframe.html";  " I- f8 I6 b. o/ g  f. f6 |/ D- y1 @
  4.     top.location.href=self.location.href;1 b1 X! x5 x; X1 m+ B4 i$ @$ ^4 T
  5. }  1 L( e) y1 O, C: Z7 N2 B. c
  6. </script>
复制代码
* D. q! F8 L+ n/ w" p1 p
将上面的代码复制到需要屏蔽页面<head>里面加载。0 j3 N4 m. v- i; V. }
制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。  Y% Q! u/ Z  d9 l
原理:8 z' z8 o1 Q; X: A) T4 s
第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。3 Z1 L4 w8 M" Y8 w
第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。7 D4 W- B8 |! Y$ i, i
目前测试这种方法没什么问题。+ d5 y' h; U3 I9 |
9 k$ c$ U$ X$ I
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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