搜索
查看: 14643|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。
3 i1 \6 d" ^  q8 E这次讲一下如何防止自己的网页被别人iframe。9 x1 c7 V0 z* c5 G

# X- f1 p! x" h! ~1、这些方法都可行,但不是太可靠。
* l' [7 S, f5 \* u
  1. <script language="javascript">2 M& t! ~8 ^5 H8 J& U0 `, g) M
  2. if( top.location != self.location) top.location.href=self.location.href;  ?2 K1 F9 P4 o0 p) J' T
  3. </script>
复制代码
9 t4 q, N+ G3 w* ]
  1. <script language="javascript">
    8 Q) E+ [9 Q) o, Z9 c
  2. if (top.location != location) top.location.href = location.href;
      K) B5 ~1 r/ _/ ~
  3. </script>
复制代码

9 V7 O! B7 H% l! P
  1. <script language="javascript">( L! N. H6 w" z8 B# I( O6 ^6 a
  2. if (top.location != self.location) {top.location=self.location;}
    2 s" `- D2 }9 @6 n, p6 }
  3. </script>
复制代码
& ]6 ^, d4 N4 w$ q. t5 x+ d0 k
  1. <script language="javascript">* h& S) l) y6 w' {6 h' G* B
  2. if (top.frames.length!=0) top.location=self.document.location;; K, T9 j: a4 ^- `& ]& {
  3. </script>
复制代码
不可靠的原因:3 E; p( _. ~& e, ^! p) u( [  X
当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。4 O9 E" Q( }* X' ~) O
  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>" {' V' ^" L7 h. o2 @% ^8 V
  2. <script language="javascript">
    / ~) y! V8 E' f2 W8 @% V7 l  ^
  3. var location="";2 k. H3 j3 Z+ y; m# O% w. ~; |
  4. var navigate="";
    + ?7 T$ O" j! R5 y8 Y' v5 P$ W
  5. frames[0].location.href="";
    + Q0 U* f' V9 e% A  s7 F, E! d. m+ W
  6. </script>
复制代码

) [" G; C: p. S: J- z) Q
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码
, G& N. D! ^% o3 o
& @) K0 J4 c* i% |+ U2 `) }+ z
  1. <script type="text/javascript" charset="utf-8">
    & V; e  Q) Q( 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>');+ y2 G7 s: _$ ~* G: x6 J
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。
5 C5 Z2 W2 Z' i/ O% s( r) ?Meta标签方法
( T. i! U" D4 X1 v* h, Z, k4 }4 S
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法$ i' T8 _* V2 c' z
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法8 Z" h$ r# E9 C& ?
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法) U5 l  x% O. ?$ n1 O5 b
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码
7 o5 m% {  \( d' J- }. ]( _9 q' W1 p
.htaccess方法  z+ ?3 c5 r5 g/ E8 }3 @
在网站根目录下的.htaccess文件中中加一句! n, k+ g2 K" A, \" o- Q
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码
* H  i7 ^  y2 s/ G7 {
IIS方法. A0 c0 ]% r9 W
在web.config文件中加
  1. <system.webServer>
      c$ w& t# M" `
  2.   ...
    2 P6 M. Z% b0 F' A8 Y0 K: e) S6 x
  3.   <httpProtocol>9 @" K% R/ u) Z3 ?/ K/ Q7 a
  4.     <customHeaders>
    " a* g3 _/ C. k% J* z$ L
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      ) S) |% j4 e; j
  6.     </customHeaders>   
    5 t7 x) W0 O3 i2 B4 L1 ~
  7.   </httpProtocol>  
    . r& d, t! w' T- o
  8.   ...; d/ v6 E+ ?- `8 e# D
  9. </system.webServer>
复制代码
. O7 Q: u# G" R, F  B
之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。
6 D. y* Y, l7 k. V0 K) k7 p
8 J2 D' B+ V( z3 u" G  x3、推荐解决方法。
+ n/ n+ p4 L- ?+ G+ e8 C; `
  1. <script language="javascript">  
    0 s) \% U1 K$ y4 a* m# c: E+ l% n
  2. if(top != self){
    / w# l2 T% H' ~. Y% a, G  |
  3.     location.href = "http://xp6.org/iframe.html";  0 P2 {: `* t( k$ u0 }/ I
  4.     top.location.href=self.location.href;
    : Y3 m, ?$ c+ P* H: G
  5. }  0 h# k- x) s+ n+ H7 G+ I" }
  6. </script>
复制代码
- V4 g" N! m- W& h1 P7 e3 E
将上面的代码复制到需要屏蔽页面<head>里面加载。
/ j5 F7 y* x4 Y! ?制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。& E; M' U! E( v' E7 h: |
原理:
2 V, x! Z+ Y* i! z第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。& f/ a* d& f+ U9 Q% \
第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。
" u. W) s6 J% ]* w目前测试这种方法没什么问题。
" j. u! f$ {( ?- I! T
, U6 |3 f/ h4 C9 P9 _6 _
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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