搜索
查看: 14863|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。$ r% j( C2 |* f/ M- F& y2 @# z) ~
这次讲一下如何防止自己的网页被别人iframe。4 P' R* S8 a+ X6 N3 R

$ s' I) ?9 P) |* i  H1、这些方法都可行,但不是太可靠。
) t+ ?; g" K% \
  1. <script language="javascript">& l% `4 D0 C& U5 L* P, q
  2. if( top.location != self.location) top.location.href=self.location.href;$ ~+ z4 J3 u4 {; Y! D
  3. </script>
复制代码
8 C$ ~/ D- V+ g6 [: W$ H" R
  1. <script language="javascript">
    2 h- T, U0 G  n* ?# `: E) T! D
  2. if (top.location != location) top.location.href = location.href;
    5 c8 ?0 ]6 n, R8 P" J1 d/ e3 Z1 |
  3. </script>
复制代码

! u* Y# }" _7 f2 }
  1. <script language="javascript">- w8 j8 J$ T' L$ j/ m
  2. if (top.location != self.location) {top.location=self.location;}- I4 `/ q9 a8 {* C1 P
  3. </script>
复制代码

, R+ G5 M* N: _$ p/ p
  1. <script language="javascript">5 R& i6 b& T1 T2 C0 K. b4 `
  2. if (top.frames.length!=0) top.location=self.document.location;  a! j1 I' [% X+ h& U
  3. </script>
复制代码
不可靠的原因:
6 F2 {$ k4 Z8 G5 h1 t; {$ N当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。% d3 i$ n6 }7 Z; _: Q
  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>
    & Y& u6 x( o: |- p0 M. [
  2. <script language="javascript">
    " B7 X, E9 c7 _& L2 ^% c
  3. var location="";$ m7 A! {& T  L$ S+ `+ }! Q' j% d
  4. var navigate="";
    / ?/ F+ `% @1 b4 M. h
  5. frames[0].location.href="";  w3 C5 h7 i8 o
  6. </script>
复制代码

7 q+ v7 S8 X, x5 Q/ L% V( O) F
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码
% l! a* E4 k4 p  n7 Y! q1 c

5 d0 v) e/ v1 s# X. L" p- P2 S
  1. <script type="text/javascript" charset="utf-8">
    9 U8 g, _5 ], y# q7 M* z8 K6 @
  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>');
    : m# I4 r5 \1 K0 V
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。
$ C/ i5 k( g; h% g7 m/ }Meta标签方法1 x  G4 `6 h4 c! }9 u% N
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法/ D$ P( s/ s: i5 f
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法- O" G' v$ a5 f+ k& s, L- g
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法
" ^; x$ b. }9 N9 P; D  ?
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码

& [  y/ ^, Z$ @- `$ f+ U3 \.htaccess方法: e' i& q  B* ]8 \
在网站根目录下的.htaccess文件中中加一句
; ~3 s( B9 _2 O/ D
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码
7 M# {" k6 a8 e, K
IIS方法
$ s1 ~" B5 D( |8 @9 e% |) c9 Q在web.config文件中加
  1. <system.webServer>& F* a/ ~( o) q; M9 n4 a
  2.   ...
    . G2 F$ T" ~+ D) X' n3 H. d4 `
  3.   <httpProtocol>" O+ j8 {* U  k& f' H2 b* k, O8 z
  4.     <customHeaders>& m6 Z; y% F4 o3 |& i9 {5 f
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      5 @; I  h/ T6 r3 |, m
  6.     </customHeaders>    ! F2 s4 }( t9 ]+ a9 {' a- z1 L! q
  7.   </httpProtocol>  9 i$ _( g- F6 K6 l% w) C
  8.   ...
    1 F) a: i5 s6 b$ b% V: m+ P
  9. </system.webServer>
复制代码
/ o& ]! x$ F0 T% `1 _4 a5 Q" G
之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。. @0 p) O/ N% i
& c# m5 c: e7 Z% X( L* ^
3、推荐解决方法。+ R* I3 A% V$ \/ M
  1. <script language="javascript">  
    , y4 J& C- r0 o4 M
  2. if(top != self){
    - c" ^& a0 v$ p( ?1 ^
  3.     location.href = "http://xp6.org/iframe.html";  
    0 \' Z6 N+ a% A7 y) w
  4.     top.location.href=self.location.href;
    2 e) N/ D6 O1 g1 T
  5. }  3 w3 f+ M2 X+ K- z6 S# s
  6. </script>
复制代码
3 X" y* K  e+ q" W
将上面的代码复制到需要屏蔽页面<head>里面加载。
7 O: c/ L1 y' D3 u制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。
( W8 f/ z2 q) E* O/ ^" K. r+ r原理:. E: {: q: M7 R" x! F/ U
第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。6 s; C/ U1 q$ t" p( L: o
第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。
+ z3 {7 z, L$ {目前测试这种方法没什么问题。
. \+ k; {) ^8 Y3 G5 |- u8 p% W3 O+ O( x% V# D/ Q3 Q! H8 ~! s2 |, E
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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