搜索
查看: 14414|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。+ b: F, x' p. \3 `& r7 w4 N
这次讲一下如何防止自己的网页被别人iframe。
2 N  h) V3 F1 J; z# g% j
) X9 P. V  O" Q6 P9 ]1、这些方法都可行,但不是太可靠。
& }+ `) b. P# r& `
  1. <script language="javascript">0 `  w1 w5 G* K- \
  2. if( top.location != self.location) top.location.href=self.location.href;9 B6 Y. c, x/ e3 j$ v
  3. </script>
复制代码

# K2 O8 u8 V6 C
  1. <script language="javascript">
    9 ~6 c5 D* f, @% `! S1 L& V9 x
  2. if (top.location != location) top.location.href = location.href;8 \+ Q; O6 H! X, J# z' s
  3. </script>
复制代码
) z+ q: x2 ?2 ^/ Z* [& u* H) e! G
  1. <script language="javascript">% a) z& w8 i3 j9 y' P
  2. if (top.location != self.location) {top.location=self.location;}- u* j3 H" n9 |
  3. </script>
复制代码
# a; \* G$ H7 o. ]2 f- T2 M# b& ^
  1. <script language="javascript">: c* i2 B  d8 @9 N" E
  2. if (top.frames.length!=0) top.location=self.document.location;- H6 v/ s. k9 D
  3. </script>
复制代码
不可靠的原因:5 f/ g) K) n! r+ `/ ]# a
当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。$ _* Z1 `8 R  y( Z8 w! G/ \. T9 p6 x
  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>
    # H& o$ j/ f3 B0 [
  2. <script language="javascript">
    ! F/ d2 j- q) s& L6 e
  3. var location="";
    0 u; a- w3 Z/ n$ v
  4. var navigate="";  o4 [8 V& l/ A. l" G% }  L" c+ T
  5. frames[0].location.href="";# y9 N1 U& @" g# o4 s
  6. </script>
复制代码

) f9 ], E& R9 _$ o6 g' Q
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码
$ s* R( b7 R- {9 i
' [6 q. c7 c# A+ d# y# s7 g
  1. <script type="text/javascript" charset="utf-8">+ S/ n2 S" x8 }& T& h+ r
  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>');
    " o. a6 \2 n& W& |9 l
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。7 N$ m3 d/ |- L5 B; v. s2 ?1 t9 f
Meta标签方法3 y( ^& O3 e9 V1 X1 t9 ]- ?1 E
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法
% W5 Z) u4 e! B/ ]  R" f9 g/ P
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法
4 L9 o. L7 e: N  y/ c
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法' D! X. B7 u/ {
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码

! Y0 }; i- n& [1 P* y8 p.htaccess方法
% D% D5 y; A, q( L% _' _在网站根目录下的.htaccess文件中中加一句
- }/ d/ v) y+ g  R3 c3 [8 g! J% P1 w
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码
/ ~3 V' m3 e' c/ L/ c
IIS方法
7 O6 x5 c$ h& {( L  [8 Z2 z, o5 K在web.config文件中加
  1. <system.webServer>2 O7 p$ n5 K  e; i- s
  2.   ...
    / @/ i2 [. s% N0 l! h
  3.   <httpProtocol>
    8 f1 s; O0 h1 s$ h7 }& |* w* G
  4.     <customHeaders>9 y. k" o9 J9 _, V& O3 X
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      3 f" u& C4 s+ f( z. ^8 [( A' l
  6.     </customHeaders>   
    ! i; E6 k: _. j0 T
  7.   </httpProtocol>  ' ^. x5 p4 b7 @1 O4 w" T4 O
  8.   ...8 G  ~. m+ `- e( v
  9. </system.webServer>
复制代码
4 \( `, f" g' M
之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。! U$ {& I% Y0 Q

, ?9 F6 @8 w6 C1 `, ~3 v) {2 g5 U3、推荐解决方法。
7 P& v' w) t; n+ Z0 o) @9 H
  1. <script language="javascript">  
    , b  a* B# p$ U0 y  J: L6 z
  2. if(top != self){/ u( w' K4 t1 W: b( O0 q
  3.     location.href = "http://xp6.org/iframe.html";  6 q4 ~; S  o9 w- |
  4.     top.location.href=self.location.href;
    % m  I0 T! [% K
  5. }  6 m# c" ~* ?' W6 V! l4 a' S
  6. </script>
复制代码

& ?% ]( B7 U$ z将上面的代码复制到需要屏蔽页面<head>里面加载。- c" z' C: }+ T5 K& h9 ]+ j& K
制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。
, K1 l, ~7 C0 K; j' L: l& D原理:8 o. U+ Q/ N& T& [
第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。4 E0 \# E  n. ~$ z7 \
第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。) s0 D% k5 q+ y/ l2 q' k+ W
目前测试这种方法没什么问题。
0 J& ?) @$ t$ w: u/ f6 G
% H2 q; l% I! K- d. m
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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