搜索
查看: 14578|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。
+ Z# y0 T2 p% j( f3 X: r$ {; C: m这次讲一下如何防止自己的网页被别人iframe。
2 }# e! p0 ~5 t! u2 e0 b4 `- f2 g/ ^% p5 n
1、这些方法都可行,但不是太可靠。3 q2 B. I3 H% L8 Z* p. N
  1. <script language="javascript">, U# r0 t0 y* _# m* D
  2. if( top.location != self.location) top.location.href=self.location.href;8 @; p! Z  j% |  h# b7 H0 C# ]
  3. </script>
复制代码

, ?% a" q4 x" C9 r6 V1 J
  1. <script language="javascript">7 ]& P9 n% M7 y! o) _( G$ Q  `" b
  2. if (top.location != location) top.location.href = location.href;' |. N1 H* S4 a
  3. </script>
复制代码
% h6 v' U- M( ^' n: {  q5 Y2 ]. t
  1. <script language="javascript">& S6 }" W5 v0 Z/ |: P  m$ k% `
  2. if (top.location != self.location) {top.location=self.location;}
    / o" f6 y. t: T( ]
  3. </script>
复制代码
( M; L) t0 G3 m0 z9 h( H% q0 {
  1. <script language="javascript">
    : H! c& V5 R1 m; m6 ~4 U
  2. if (top.frames.length!=0) top.location=self.document.location;
    : R" x0 ~5 k) v+ r
  3. </script>
复制代码
不可靠的原因:- \! D$ s3 F) v) o8 k
当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。
# a1 T# o$ ?  C3 g! d
  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>2 a- q$ }+ B6 E0 ]) t
  2. <script language="javascript"> & J( m+ p% `% f
  3. var location="";
    ' r# y% y  m  t5 I
  4. var navigate="";% r" o0 U, q* J, P# B3 \) t4 y# }
  5. frames[0].location.href="";
    . S4 K4 _% l* n- T) t6 k) J* K9 K7 {
  6. </script>
复制代码

+ q8 n% F( D& F* s) v; I* o# \1 U
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码

3 L' f" r. {% c- n2 i5 |
7 z1 c5 E& b# P* D4 ]9 |
  1. <script type="text/javascript" charset="utf-8">
    " T9 F) K% `& @" D
  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>');
    2 O. S* f- H, i3 {& N0 q; r
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。; m% _4 A9 ^, b' n
Meta标签方法
0 j1 J' _8 T$ ]
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法+ z  q/ T4 H) }+ c( S9 {5 X7 n- s
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法+ X+ o) F! [3 T% U% F) ~5 U" J$ X
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法
" M. K( W2 V( g3 f3 S4 I
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码
1 e% E7 L, v9 s4 ~
.htaccess方法9 N, D  `3 h, B; p( A
在网站根目录下的.htaccess文件中中加一句- r2 n' \8 j0 f  C
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码
  ]) B) b+ j2 `0 y! J' a
IIS方法2 R6 T+ r6 S4 H2 K8 C* b2 ]
在web.config文件中加
  1. <system.webServer>1 s( m: \. B7 B( v
  2.   ...
    ' A% k2 j4 t. z$ M
  3.   <httpProtocol>2 X9 r/ c0 s& r: R
  4.     <customHeaders>
    2 B  Q9 l& T- V: ]: p1 i
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      : x- ~. A% l: X* ?) p% k
  6.     </customHeaders>    5 F9 T  d' k  \' x6 b
  7.   </httpProtocol>  
    1 N! v( z( h* x4 E9 h
  8.   ...
    , s  m% }9 l$ f) A$ Q" }
  9. </system.webServer>
复制代码
5 F8 k; @' @. p7 Y, V  [% [
之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。! H, s& A, G7 T9 z

* G; R$ Y4 u) N' D! \3、推荐解决方法。
3 Y8 Y  X1 s7 I, I6 x* H
  1. <script language="javascript">  
    6 e4 K1 k  r0 g" {" |* K  C: Y4 y
  2. if(top != self){
    ! B/ Z4 y) o  J# M- h: ~! {. P( M
  3.     location.href = "http://xp6.org/iframe.html";  . e4 V  y' l/ Q, a0 p3 u& a9 ?
  4.     top.location.href=self.location.href;
    7 h; V8 ?; f- `  V; H! i
  5. }  
    ; N( Y( z" }! s  Q
  6. </script>
复制代码

' I( a9 V6 z2 j" z; i( `将上面的代码复制到需要屏蔽页面<head>里面加载。  C: s4 w  o1 v4 d4 I0 I+ j
制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。3 Z! r+ h% b* O' V# l6 |! t+ R
原理:$ f$ ~" n* O- D. x$ l& k
第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。
- T! x+ H! J2 Y7 |4 z第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。; i% ?9 V2 m$ }  ^% ]8 U
目前测试这种方法没什么问题。$ N7 M& }! K% Y2 ?# s& K8 y4 p
" ~! s+ v; F/ d2 P3 M
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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