搜索
查看: 14625|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。9 t+ Q* V7 |( N4 m8 L/ T: b
这次讲一下如何防止自己的网页被别人iframe。
: O8 p$ J9 E; a; I( V+ w) [7 M
: B% l! Q7 Z) C9 i1、这些方法都可行,但不是太可靠。
9 b. Y% |/ @) V
  1. <script language="javascript">
    8 c/ a0 S7 R; @+ b# t
  2. if( top.location != self.location) top.location.href=self.location.href;% {8 v- n# H- h0 ?3 `
  3. </script>
复制代码

6 G" U1 |/ x. z7 z; A
  1. <script language="javascript">" Q& [5 G! p+ [- X$ [* [0 b
  2. if (top.location != location) top.location.href = location.href;8 H2 w& V! L9 \
  3. </script>
复制代码

3 }2 [* q4 `  ]7 _3 G2 B
  1. <script language="javascript">
    ' w: J. d+ m4 V9 W, X+ A# w9 v
  2. if (top.location != self.location) {top.location=self.location;}
    + }$ n. M. f) Q% h" O0 ?
  3. </script>
复制代码
, \8 ~; S5 G6 D2 Q
  1. <script language="javascript">
    / `+ m, s) z# r% Y; V
  2. if (top.frames.length!=0) top.location=self.document.location;6 ^+ n0 j! ^; O/ |% v
  3. </script>
复制代码
不可靠的原因:
; T! _  Q9 v- b3 C6 M0 s当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。
% M( j1 o, ?5 |- ?6 N1 R* e
  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>
    9 P) L" f( f  T5 L- F
  2. <script language="javascript">
    ; L/ ?: j: {8 t! F- Z4 Y
  3. var location="";
    5 f4 E+ h7 O8 ?/ f
  4. var navigate="";
    ) y1 Y+ w. @/ @7 _
  5. frames[0].location.href="";
    4 d" k1 l# \$ _6 U. {
  6. </script>
复制代码
% o1 u( v9 p+ \5 E+ ]
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码

# c. [# F' X, @+ J9 T, B
8 n, Y: h/ F6 d( q, W; k
  1. <script type="text/javascript" charset="utf-8">( w- d2 x1 C9 p1 n- A- ?5 \
  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>');- W: w# N1 p1 b$ M
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。
/ V! p; W/ n4 }# W- M+ AMeta标签方法. l# a8 y$ S6 I  o. c$ p
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法
! e) r0 y2 U: j9 q3 N
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法& ^" V' W5 M3 J* Q# r- e. D; G3 [
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法5 N, A# m+ M  L% b
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码
$ I; d* W, _1 B" g0 `
.htaccess方法
, Q% r( ^  _2 F# E在网站根目录下的.htaccess文件中中加一句6 |* P* A  F# x. o0 O
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码
3 d' I7 a  }. p& R
IIS方法
. C3 m1 p' c5 i# R7 \- h在web.config文件中加
  1. <system.webServer>
    " q* a# b0 V; a
  2.   ...
    . A3 h9 m6 S  \/ U4 I
  3.   <httpProtocol>
    $ g2 a/ Z* m" }/ f7 H
  4.     <customHeaders>
    , f2 D0 A& ^5 a5 ~% j
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      1 U6 d. W- w# `- X" H; R
  6.     </customHeaders>    ( h+ b3 l+ R( H, _* w& m
  7.   </httpProtocol>  
    ! K1 y$ \8 r: }8 o
  8.   ...
    ( v# s9 n: a/ e) R# e1 `
  9. </system.webServer>
复制代码
8 b" [! B& {% `/ C0 v  {% i
之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。$ g  d2 ^; K4 @. B5 P9 D
% L/ r5 }, M+ \/ {8 w6 Y5 F
3、推荐解决方法。! e' I8 Z1 D! R( V3 _
  1. <script language="javascript">  ( V+ I# `* A: J0 G: T, U+ Z
  2. if(top != self){1 T7 N  R1 `, x* i- I3 p, e+ _
  3.     location.href = "http://xp6.org/iframe.html";  
    ' k& G* |: j4 q, J) ^7 t& \# }
  4.     top.location.href=self.location.href;
    2 o; ]2 s; }: z/ D) b6 H, s
  5. }  ' n7 Z; J1 |4 m! F8 D" R
  6. </script>
复制代码

2 o1 m7 y7 x- Z" v9 H( P6 h将上面的代码复制到需要屏蔽页面<head>里面加载。
0 ]$ z, {! p* c$ p) N制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。
5 d$ T7 u5 `' m* ]7 o- L* E2 g原理:9 ?, l- u, b1 f
第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。) V& D1 p0 z# U1 Z
第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。
# n, X/ Q& l5 X1 T" ]1 d目前测试这种方法没什么问题。
# d: a% |8 B7 u( B, D2 w
+ A' p  R2 v: J; D0 B1 g' V
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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