搜索
查看: 15173|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。2 I  H, u' c3 g
这次讲一下如何防止自己的网页被别人iframe。  X  F: d& g- ~0 O( r" ^  o
6 L  @& o6 c& u( x# E5 d
1、这些方法都可行,但不是太可靠。
* y- Y$ j4 z  v5 w
  1. <script language="javascript">7 w7 B. Q7 W% P. y
  2. if( top.location != self.location) top.location.href=self.location.href;
    & W  b+ c& M2 B! b8 z9 D
  3. </script>
复制代码
或" w" g+ A; J8 n* F1 E! a9 j$ w4 G
  1. <script language="javascript">* f& h* [9 h5 v
  2. if (top.location != location) top.location.href = location.href;4 R: L$ L) U' U! ~4 `* C+ u: y
  3. </script>
复制代码
或
! X0 `. ^: i4 ~" x0 v: f1 l
  1. <script language="javascript">
    / [, R* K2 ~! Z" p; p( G7 ^% t- v
  2. if (top.location != self.location) {top.location=self.location;}. S+ ~3 x& L3 f/ @: |
  3. </script>
复制代码
或
. R* N$ i, N$ h" e
  1. <script language="javascript">7 U! X+ x! t" G! Q
  2. if (top.frames.length!=0) top.location=self.document.location;
    5 Z. T( M* S; s' ?# D0 _8 l/ Z" W
  3. </script>
复制代码
不可靠的原因:+ c) p+ O9 w9 Z7 Z
当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。
- ]; e3 z1 q0 e9 T: b& E  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>  Y  s% K# L) b1 }$ m2 f
  2. <script language="javascript">
    + F8 o) {' `. M8 Y6 M& c
  3. var location="";
      I( G/ w1 S; d& c+ o
  4. var navigate="";6 ^: s* a& W+ I' W4 P2 k  Q$ k! k* b
  5. frames[0].location.href="";
    / y9 o- K1 c8 G( l
  6. </script>
复制代码
或
9 G% ~, \1 X3 J) m; t: H
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码
或
7 j, S0 r1 c5 H. D/ W; Q! K, c, T
4 {" r. V8 w- l/ v3 H
  1. <script type="text/javascript" charset="utf-8">0 A3 V3 S5 D2 F* x# I: z
  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>');# V& ~' c2 r$ N
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。! Q9 s; _+ o8 p1 m
Meta标签方法
, \: c* S& P! E- n8 O
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法- A0 N- W7 N/ s, u6 F
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法
0 B$ d! G# m  P" j; h) u- Q" c5 _* M
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法9 l' Z* y& S( E* Z# z
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码

8 h' Y/ S; }6 H. x' H8 m.htaccess方法
6 |  d& i- x' p( b9 w& p$ B; v2 b在网站根目录下的.htaccess文件中中加一句
6 F, `! @3 e3 y
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码
; k5 e. H9 Q9 [% X
IIS方法9 m( A0 O8 V, r2 w" G8 F2 ^
在web.config文件中加
  1. <system.webServer>1 @2 [4 c* Y% y6 h1 j! V, s* \, @
  2.   ...
    5 M5 R0 M" ^" M9 q- f! s
  3.   <httpProtocol>" {2 V1 f3 k- V% ^+ O0 m
  4.     <customHeaders>
    ! [" C* |/ [  q6 s, [  U% l
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      
    ! R$ i  M( P- }' t
  6.     </customHeaders>   
    1 x  o# K7 x9 k; A" z+ B" ]
  7.   </httpProtocol>  
    2 [7 s) o; L+ ]+ Y' O  D2 m! ~* Y
  8.   ...$ d  a/ q8 U% @' h3 g  |
  9. </system.webServer>
复制代码

# R7 A) n) a; F8 q$ ^之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。8 i4 z  y, `6 ?( s! L
2 Y7 Y6 s6 {; U$ A6 B
3、推荐解决方法。
/ @" ~- J8 \  `
  1. <script language="javascript">  $ H* e5 `$ e/ p9 h
  2. if(top != self){7 O- j9 x" ~3 f7 D( s- l
  3.     location.href = "http://xp6.org/iframe.html";  + m6 ?6 T# q+ U3 B9 Y7 p" |2 W
  4.     top.location.href=self.location.href;
    + X* c2 C; _- N4 R: D6 I( [
  5. }  + C; `1 h/ M6 f1 q8 O
  6. </script>
复制代码
5 ]+ Y. y% W' c" z, n# W
将上面的代码复制到需要屏蔽页面<head>里面加载。, `3 q) J6 h# S5 B9 Q7 l9 q
制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。* C0 `9 {9 l4 g( |
原理:
% C: {4 j' y9 d- h# G第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。
# Q# d) @' [! C0 `- R& b" ^# e第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。+ z: E* g( I! b9 ^; g
目前测试这种方法没什么问题。
% v/ W% y) `4 [' E7 K+ n1 t2 G
: _; c* N/ n0 j; ~% {* n
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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