搜索
查看: 14197|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。1 u" M' x, _: C' S2 V
这次讲一下如何防止自己的网页被别人iframe。+ e: H9 ]( Z2 U+ R# F+ `* m" x

/ C7 u  [2 t( l3 {% _5 r1、这些方法都可行,但不是太可靠。
' V/ u0 v: R1 I0 R; G* v6 g  H
  1. <script language="javascript">+ ?9 D. O/ I1 \
  2. if( top.location != self.location) top.location.href=self.location.href;% `$ I) i+ `9 f2 |. Q: i' J: h0 L
  3. </script>
复制代码
7 t0 Q, s/ G& r% d2 G0 ?0 Q
  1. <script language="javascript">
    ! C$ f' _5 z7 f2 b; V8 d1 c- q. H
  2. if (top.location != location) top.location.href = location.href;
    / b& s- Q6 C1 m3 U. J5 r
  3. </script>
复制代码

8 O' k4 H2 X! F3 I
  1. <script language="javascript">6 _0 W( M/ |; ^5 n& N
  2. if (top.location != self.location) {top.location=self.location;}
    2 P$ Y( K7 S4 @8 q; b. e% @7 w" ?; g/ f
  3. </script>
复制代码
7 E; P$ `. e' x4 Q7 L; Y, B# w
  1. <script language="javascript">
    ; \- q& l' f# A3 z4 ?9 s5 R& n
  2. if (top.frames.length!=0) top.location=self.document.location;" X7 X( P/ h- h" G( i( ^
  3. </script>
复制代码
不可靠的原因:
5 a: A4 ?: z: c* a& F% _( ?当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。
/ L7 S8 J7 O* h$ 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>
    + O5 a6 h9 y" X% n6 M' E
  2. <script language="javascript">
    % n  n9 a8 n( z. b+ }. t* T
  3. var location="";
    ! @1 Z, l2 Z4 ]$ c% k
  4. var navigate="";
    " O8 Q; ^, x" q6 E- ?3 T9 ~! b
  5. frames[0].location.href="";
    * \: B/ W! S/ s# w/ R
  6. </script>
复制代码

7 P! z2 r; X. H9 C7 |  D
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码

8 b; ]% j, S% g7 y0 _& x$ Q2 w
- h8 |# |. G* V* t
  1. <script type="text/javascript" charset="utf-8">
    4 b! H* v+ m  P, y6 z7 ~2 ?  E: ~7 `
  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>');
    - Z/ u- B4 q3 A; Y, C& _% w: \+ G
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。
/ w, `; F2 l  `6 s5 kMeta标签方法  B- Y8 J4 C: Z$ `. v9 P
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法
% V3 r# x" |/ r4 U
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法# {, ~* e3 i$ ~
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法
% Q2 X* H0 n" k2 c& s$ e
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码

, G6 H; W' Y3 I+ N6 c6 b.htaccess方法
" J2 v! p0 E% {' @. m' E8 d在网站根目录下的.htaccess文件中中加一句9 L3 k( N- d' F  [/ S
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码

% e! L8 v) n7 H2 X  Y( G0 zIIS方法
# \, k$ A$ S! F在web.config文件中加
  1. <system.webServer>
      \+ V! e9 E' P$ |' O4 K
  2.   ...
      Y# C! t0 E, g4 t. q  N
  3.   <httpProtocol>( i8 a/ g& I2 ^
  4.     <customHeaders>. b! i/ B4 u% J) y1 g0 x
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      
    0 f+ @* H+ e! |$ f# j
  6.     </customHeaders>    ! t; C0 u1 Y, h5 ]  ]. G
  7.   </httpProtocol>  9 l& h, P4 ]" O3 |/ P. W( i
  8.   ...$ c7 t2 R. k5 M- \4 l$ @
  9. </system.webServer>
复制代码

" ^2 w7 t5 Q0 e) l- r/ ^之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。
% ^  J, ~& q+ A. |- K5 L6 E2 L5 l$ @% B  _9 S' z5 k
3、推荐解决方法。
6 a7 |3 y  [6 a0 g5 J& c# Q
  1. <script language="javascript">  
    * |1 F' R, U1 E. f
  2. if(top != self){( I, d  G% D) \; s( y( w
  3.     location.href = "http://xp6.org/iframe.html";  3 ?9 X5 f  G& Q$ ^. y- j, P
  4.     top.location.href=self.location.href;
    5 v7 B0 p2 B1 X( F7 ~% M
  5. }  
    ! F" l, J8 Q8 M4 |5 @  t! w
  6. </script>
复制代码
' r$ G( |: P, i* p/ \2 Y
将上面的代码复制到需要屏蔽页面<head>里面加载。
/ e  E! s, f7 D9 f0 t$ H制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。
1 n6 M8 l7 S  n原理:
  P; D3 g- b5 v; @第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。) O3 ~4 A0 r5 a0 ~( d: x
第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。% n8 ]4 a1 b' [4 I" W
目前测试这种方法没什么问题。
0 n+ w) J0 t) f* j
: g5 u. |& }' q2 B2 f# j; b
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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