搜索
查看: 8804|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。" g8 ^- x" L2 F! f/ V
这次讲一下如何防止自己的网页被别人iframe。
' L6 |+ O1 j! V
$ f, Q, _) m1 ?3 k* g1、这些方法都可行,但不是太可靠。, Q% g9 b" W0 D' V
  1. <script language="javascript">5 Y4 t4 C0 R9 @+ o: }) J
  2. if( top.location != self.location) top.location.href=self.location.href;- F/ C) t2 i8 ~3 z* B
  3. </script>
复制代码
$ |+ w& n8 N4 L) `. [
  1. <script language="javascript">
    0 F& ~9 h- l) V+ S
  2. if (top.location != location) top.location.href = location.href;
    ) l1 o! w1 R0 h, l
  3. </script>
复制代码

2 y3 r# X, J# V, a; p9 @5 Y
  1. <script language="javascript">/ w* ^! N& X/ L+ a/ d
  2. if (top.location != self.location) {top.location=self.location;}
    % f3 ^4 o* I8 y( e" D; U) k
  3. </script>
复制代码

- _* W. Q$ P' t1 D
  1. <script language="javascript">1 L1 C0 `$ [. D; z, ~0 i) l: i7 O
  2. if (top.frames.length!=0) top.location=self.document.location;
    ! T: y9 E; J# O& ]8 r/ U4 t
  3. </script>
复制代码
不可靠的原因:0 A6 \' w# S* M6 @) b: T% |
当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。
, z2 G8 E7 C  J7 c* _
  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>' r3 ^  Z; g0 |& h8 A
  2. <script language="javascript">
    , W  |; Y: v$ ?$ n/ n. I$ r2 s
  3. var location="";
    & f& C/ Y. R6 K6 E/ d
  4. var navigate="";8 f+ d5 h( z( P' w5 q! x' v
  5. frames[0].location.href="";, U" G% q; V& Q! ^0 g
  6. </script>
复制代码

- U; B- ~, c1 r7 W" j% H+ V0 X
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码

2 |  ~; o$ I1 F4 D
$ ^, A% e. K$ _5 W& _/ A7 G0 }
  1. <script type="text/javascript" charset="utf-8">; K' s' {7 Z4 U+ ?
  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>');0 p: d8 [1 L7 a* j3 [2 r
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。
. I% i% ^  p, S' g3 g8 p1 W, UMeta标签方法$ }2 e& m, F& W7 G, m
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法
, H+ n5 ^4 w# e' ?# M+ O
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法  x+ M, `" ?# v- _: T
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法5 `' }$ h6 l1 _, |/ b3 {
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码
$ v5 b3 i4 N, S; |. \3 Z. g+ _# n. |
.htaccess方法
: |4 G8 G' N7 c" y在网站根目录下的.htaccess文件中中加一句' \) n9 _) U4 t7 l. V5 P& v3 Y# M2 e
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码
! U: b# w6 k4 G* Q
IIS方法" v* C2 D9 q% r( T
在web.config文件中加
  1. <system.webServer>+ G' o3 I7 d) A4 p1 s/ R5 S* p* Y
  2.   ...
    ' P# k& P8 F9 }( S, V8 Y
  3.   <httpProtocol>5 a, {) S9 Z6 g7 c2 w
  4.     <customHeaders>; g. q0 ~' {4 p" r0 O& C+ n
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      $ h5 S9 T; u( T
  6.     </customHeaders>      e- _! v. c* i( }
  7.   </httpProtocol>  
    + `& a& }. w% Y% q6 D$ [) h. r
  8.   ...6 z( K$ N$ _3 c4 t9 W
  9. </system.webServer>
复制代码
$ T, z# b0 \- c1 N2 W
之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。0 _) e! @  T2 L# d& l5 d1 g

! V$ E8 A- E9 `- v1 i6 B3、推荐解决方法。- w# i9 a+ c8 g% `4 e
  1. <script language="javascript">  
    / v/ W# e  e. o, B% \- z; O
  2. if(top != self){
    ; Z( n/ D* r- _
  3.     location.href = "http://xp6.org/iframe.html";  : d' F# K. H! X4 z
  4.     top.location.href=self.location.href;
    , ~' k9 h8 Z) e/ `7 o
  5. }  1 B+ _5 {$ Z2 D: m
  6. </script>
复制代码

7 K  w9 H( L) _. g将上面的代码复制到需要屏蔽页面<head>里面加载。
4 D2 ^0 K1 ?( ?0 `* c- {( I制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。
% G$ N6 h8 P! T5 K( {: O- o; Z原理:$ Q( I9 K1 y2 D5 a: O
第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。8 V- E! R* s" ~0 Y
第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。
# l+ ?% G/ X! L6 I- l目前测试这种方法没什么问题。& J2 u7 k$ j- s; @

; X+ G" i2 [; ~8 t6 k5 u# S+ W* S8 e1 H
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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