搜索
查看: 9554|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。) e5 T2 |/ l2 {2 W6 {
这次讲一下如何防止自己的网页被别人iframe。
9 q2 O' \  ~+ m* F0 o" U' C3 `7 H
) M: G# j: b: @4 k- G! H1、这些方法都可行,但不是太可靠。( `. Q0 u. a1 V3 g" B
  1. <script language="javascript">
    , F9 e$ q0 _# V/ j
  2. if( top.location != self.location) top.location.href=self.location.href;
    % D' G; F& Y. b, A) E) `2 ?; o3 H
  3. </script>
复制代码

& F: h4 k$ C/ t0 a$ X# R
  1. <script language="javascript">
    3 V6 a0 ?" L: }; y: a: E4 P
  2. if (top.location != location) top.location.href = location.href;7 ?: D* y! v  y  t4 A
  3. </script>
复制代码

0 C1 ?/ W3 H, A2 I2 n) F4 T7 c3 z
  1. <script language="javascript">
    0 A* L' Y1 o6 \( [! f' L$ j
  2. if (top.location != self.location) {top.location=self.location;}0 h* Q8 R3 y( h
  3. </script>
复制代码

8 X7 m7 u2 F2 X- \- s+ C
  1. <script language="javascript">* \( G+ B, j$ A- Q5 \5 T. e' Y
  2. if (top.frames.length!=0) top.location=self.document.location;
    - e: n& N! X) H5 L8 ]
  3. </script>
复制代码
不可靠的原因:+ ^# z/ e7 m0 d8 o) p9 O
当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。
& `6 b# x0 V2 b  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>5 m% M2 Q  x2 g( A: k' U
  2. <script language="javascript">
    : b% x! y+ w/ u" z$ A, h6 L& ]( h
  3. var location="";0 K; [! Y: W( ~4 `
  4. var navigate="";
    ! O" i1 U- l% v& {: c
  5. frames[0].location.href="";. F2 [8 f7 A( n8 I% d2 x& h! a
  6. </script>
复制代码
' [4 M  K3 K" n6 R( j
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码

8 Q+ K) h# ^7 r- T
/ ?9 h* @, M% C/ R: f
  1. <script type="text/javascript" charset="utf-8">) l1 b0 ^! O/ x  \- z. ?; j8 R5 o9 A" I
  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$ H$ v, G1 ]
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。) S' s: H! \! T* f' V& Y* n5 ~  M- W
Meta标签方法
. M3 P, H6 C2 s* D/ z, p
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法2 b& t+ N3 I6 k: r5 y5 _
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法
" _9 h: S9 d. l# A
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法
2 j) M& r- B; e( d& Y7 E6 ~
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码
5 y4 a! `7 J9 t- S
.htaccess方法
7 \! K. T, \: v" ~' A9 I在网站根目录下的.htaccess文件中中加一句
% ?: i, e7 v) [6 k$ G8 O! T" l# d3 a
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码
9 D3 S; \8 a3 j5 v
IIS方法5 B! l! U; z$ e. p# Y
在web.config文件中加
  1. <system.webServer>6 r9 x) \# Y! H
  2.   ...
    8 W3 C) R( g5 X9 |. r! u
  3.   <httpProtocol>
    . }8 d6 w1 G* x+ O
  4.     <customHeaders>; M: b1 g1 W* N! L+ X9 c
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      4 a3 Z4 R, [6 e& ^8 M& K) w5 J2 K' c
  6.     </customHeaders>   
    % G& O9 U$ l* W, T0 b" f1 K( F6 E
  7.   </httpProtocol>  
    8 m+ ~# q1 i& v. F
  8.   ...
    ' }, p/ H! N2 a8 a
  9. </system.webServer>
复制代码
' d/ K. \  E) q4 n9 F1 s) R1 J. }! w
之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。/ {4 C9 o) n5 p& p" K) m7 G/ N& I
2 J' c/ m( ?7 p6 I( o0 j
3、推荐解决方法。
" f4 ~' k. E6 w4 ~2 d' R' b3 N
  1. <script language="javascript">  
    & G, P6 {) N" v; f1 `. I
  2. if(top != self){
    + s  t5 {6 H# @# g4 Q- M
  3.     location.href = "http://xp6.org/iframe.html";  
    7 {2 O% e' Q6 E! y6 q5 d+ q
  4.     top.location.href=self.location.href;
    3 {* w* Q' h; d, \! s' W7 L
  5. }  ) ~+ k& J4 m! e. E8 i
  6. </script>
复制代码
# l9 J5 D( L. [0 Q
将上面的代码复制到需要屏蔽页面<head>里面加载。
! R3 k. w6 C7 M. }  {! y制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。
7 V( C6 }. f+ L# m% g/ d+ J原理:
5 V5 W/ O7 z9 e* s, ^第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。1 o3 W" ?/ W' ]+ L- G: j. }# K
第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。
5 H8 h; `0 s$ {8 u目前测试这种方法没什么问题。
) G& v# J- T& \( R% r1 e3 _+ `4 g/ k/ V# Z' a1 K
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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