搜索
查看: 14697|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。
4 m% s3 O$ f0 \4 O6 X这次讲一下如何防止自己的网页被别人iframe。
" l! Y( ]! D' w4 i/ b1 |( f! C, m2 ^/ R
1、这些方法都可行,但不是太可靠。
# R: t, a3 ]; D; R4 }
  1. <script language="javascript">. \: q5 Z  a9 I/ Y9 s
  2. if( top.location != self.location) top.location.href=self.location.href;0 V' `1 L0 t' `$ G2 }) F4 R" X
  3. </script>
复制代码

* B- }7 o4 c) g- l" Q" i3 M$ L0 U
  1. <script language="javascript">- L; y2 l8 ]$ G% a/ W1 n, M/ k
  2. if (top.location != location) top.location.href = location.href;
    4 ?2 l1 q6 I( }; b1 @7 R
  3. </script>
复制代码
# M! _1 k4 F: i( S- y1 L$ S" @
  1. <script language="javascript">
    ! @1 z2 ?8 a  z+ X% ^
  2. if (top.location != self.location) {top.location=self.location;}6 S" A% @' \% A( F, s
  3. </script>
复制代码
3 H: ^# {# Z7 Q5 t+ W' v5 M; o. X
  1. <script language="javascript">
    ; |7 U- l) S3 N7 P
  2. if (top.frames.length!=0) top.location=self.document.location;
    3 E: q! O7 H; }4 M1 k
  3. </script>
复制代码
不可靠的原因:
( R& t% ?1 }6 A+ c" m当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。
# R  u& e% K# y9 W0 p
  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>
    0 T+ u; G( C" p' n" D2 |  U
  2. <script language="javascript"> ) a2 h! X& I3 J  I/ ~" B* b, K
  3. var location="";
    ) b/ Z( B8 M( e! Z* K
  4. var navigate="";
    % M  X; {& d5 T0 d
  5. frames[0].location.href="";
    - e. ]: b* t1 j5 \
  6. </script>
复制代码

) k9 [/ {, S$ y8 l* D
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码
! `+ g4 P( N9 p7 z/ a3 S6 S  Y

; L9 k+ k* G" U3 Z8 Q% U( w
  1. <script type="text/javascript" charset="utf-8">
    ' ~. K- ~) q, e8 J6 w$ a
  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; b) I2 x0 a; U. j
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。1 _# \) P( [1 d2 n# M
Meta标签方法# J; x$ Z- Z. I5 d
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法, M% q! S9 z4 R8 r% F5 O6 [2 e
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法
: \4 L" Z. Z- I1 R
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法
, J) l9 W0 ]7 G4 n2 H' d  ^
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码
& H6 c" a: N4 B9 z, h* N) ]* m
.htaccess方法
3 z3 D" U6 l7 I2 }  a. _在网站根目录下的.htaccess文件中中加一句
4 J7 \" x8 ]( Z8 m9 o6 c
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码

! T& t8 I! R6 ^5 Q, zIIS方法
- n, u2 ^+ @3 \3 D/ W" x! f5 [8 r% }  O在web.config文件中加
  1. <system.webServer>3 |( D! _! F& Z% K# d" U  d2 [" {
  2.   ...
    3 g$ u% }4 g9 M, r8 d
  3.   <httpProtocol>! s2 ^! |- ?! C) g4 N! i
  4.     <customHeaders>
    / |+ W, t. K3 i8 u3 Z# \8 T0 R
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      ) y9 J- _, s$ j& E# \1 `8 ~
  6.     </customHeaders>   
    $ g, m0 u  F' w' k. f
  7.   </httpProtocol>  & I$ o/ z& B& X  |: L& I
  8.   ...
    8 t8 r! {) X$ T6 a& y. g- }- |: h
  9. </system.webServer>
复制代码

( e$ y1 q" ^  t+ E* y之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。
2 ^5 j0 g& q6 U1 b& U) C
7 I0 X% w5 G1 C3、推荐解决方法。8 w1 g1 f9 V7 ?& ~
  1. <script language="javascript">  0 }$ N0 ^; I5 Z/ C6 h4 M: k
  2. if(top != self){
    9 I, d. ~! H0 }7 C$ C3 I
  3.     location.href = "http://xp6.org/iframe.html";  ( u2 z2 C  d) `% e& K
  4.     top.location.href=self.location.href;9 ]: z& Q8 M# a2 k  j, c# Q
  5. }  . u+ i  F' D& V6 g0 ~: C. ?# ^
  6. </script>
复制代码

; {1 w( [+ |" A3 r% j将上面的代码复制到需要屏蔽页面<head>里面加载。* s! L7 b, k- ~6 |* i
制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。
) ^. ]; }0 [+ S0 ^原理:
# T$ r5 @: o% B* j% `( k  N第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。
: d3 A- Z1 r0 m: p1 g3 p* G第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。& i# t6 S+ r% m. B7 @
目前测试这种方法没什么问题。
6 J! E7 e3 v' U6 ]/ v, G) E% ]/ U! {3 \
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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