搜索
查看: 14656|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。
9 z, |- b4 r2 ^6 g9 F9 q这次讲一下如何防止自己的网页被别人iframe。1 [5 Q- s! l4 ?1 n& D6 q9 W( ~( \3 G
: ?+ K9 U: o$ g* g  K2 \8 q
1、这些方法都可行,但不是太可靠。& b( s6 ~3 T& L- U# Y
  1. <script language="javascript">
    $ v2 n8 p' A& p# R7 f& B6 c5 O' C
  2. if( top.location != self.location) top.location.href=self.location.href;
    1 \7 I0 f3 Y, \& y6 Y+ u9 i) J
  3. </script>
复制代码

: {6 T+ y- K; ?) b3 N- d7 `
  1. <script language="javascript">4 H7 v3 U& k" d7 o9 @- H' q( T; ?3 ]
  2. if (top.location != location) top.location.href = location.href;3 D) J5 k- @$ a) q0 D
  3. </script>
复制代码
; n: u. J3 X7 p2 o" f0 d
  1. <script language="javascript">& U( @$ Y, R/ s
  2. if (top.location != self.location) {top.location=self.location;}6 q1 ?' l/ }0 r0 z- ?6 D. m0 P
  3. </script>
复制代码
) ~4 B3 A( n" }9 J
  1. <script language="javascript">: }/ e; F; C( z" C- `* }* g# o$ ]
  2. if (top.frames.length!=0) top.location=self.document.location;
    6 ^7 L8 x; K9 f8 b+ ^6 o
  3. </script>
复制代码
不可靠的原因:
7 h: h$ P- V5 _. w+ h当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。, h: p' s+ a& X1 J- S/ N
  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>
    : p+ @' A0 s( C9 J8 D
  2. <script language="javascript">
    / p  U% S; D: i5 [
  3. var location="";
    . ?" k# h6 [% ]) |
  4. var navigate="";
    6 o2 B9 J2 _" Z
  5. frames[0].location.href="";
    : E6 v$ h6 l7 g' V; T
  6. </script>
复制代码

0 N' f# c) D# [  L
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码
9 o  _  B* V; X8 E* S6 O1 ]- b7 L

! e, ?3 ]1 e5 F) M
  1. <script type="text/javascript" charset="utf-8">5 `  u7 o+ j8 I! J  g+ w
  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>');" r1 Y4 c7 M, M- S. n/ X3 o
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。
2 L6 V- }0 W. a! J) y! Q' H; bMeta标签方法0 r0 _$ J9 o8 v
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法7 _: b: a! K- ]! B
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法
/ {" \! m9 q) [% d! X% Q$ X
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法' H; f  T0 A; M: w$ b
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码

. J. R/ S2 l0 J2 V  ?5 D.htaccess方法
* m' [( J. d6 G在网站根目录下的.htaccess文件中中加一句
# p& V, E& `/ G3 c9 a
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码
, z! m; ?) Z! |8 v" U; s" ?
IIS方法7 J$ S2 s* {) n6 a' ]
在web.config文件中加
  1. <system.webServer>
    % Y& i  M/ v. D& C
  2.   ...
    1 }* E+ d% R1 p8 _5 K  P6 |' |" @
  3.   <httpProtocol>
    6 V2 P% T( t9 ~' O  h. R
  4.     <customHeaders>
      I% ^3 V$ j) P  v. t  h
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      : \4 p0 a4 l$ ^6 l7 [) X" i
  6.     </customHeaders>    - Q; R. a* X- n$ Q4 {$ C
  7.   </httpProtocol>  7 g0 M; _; N; `( S
  8.   ...1 d% X# ]/ c% H" M3 A5 o
  9. </system.webServer>
复制代码
, p7 R/ p2 l1 x8 g
之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。! @2 c) l% \$ t4 {$ g
: y3 a" Z' \: n3 J: B
3、推荐解决方法。: D' b8 J9 n  Y3 B  N& d
  1. <script language="javascript">  ) Q2 Q" i% K7 N
  2. if(top != self){
    4 {4 I$ D- x& D; D0 s* m' ?
  3.     location.href = "http://xp6.org/iframe.html";  
    : E% Z8 p) w2 g9 M
  4.     top.location.href=self.location.href;
    % a: H( e$ W1 B6 H: U9 h% h. \& j
  5. }  / s, V: T* K& ^* P$ x# I% Z. z
  6. </script>
复制代码

1 q, l- Q( _* y( }将上面的代码复制到需要屏蔽页面<head>里面加载。
: {6 w$ B+ h1 O  \2 M& q3 c2 Z3 ~制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。7 H& i' x4 L! ~6 j0 W5 s! S
原理:
* y1 H) R2 Q: i1 c0 Q$ M第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。8 G4 {( q  Q& x  {0 _" @
第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。1 y0 P9 E$ F. E3 |2 r
目前测试这种方法没什么问题。
- Z9 H' q2 ?+ Q& h& U& \* K
; p! ~7 C5 A' W; `: j. e' ^
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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