搜索
查看: 14352|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。% x+ D3 u! [: @9 U+ ?2 s- W! \
这次讲一下如何防止自己的网页被别人iframe。
( X5 N! q- s  s6 m0 t4 J" F4 S  M# U, u1 Z( x0 x- q! Z
1、这些方法都可行,但不是太可靠。9 x3 L3 U8 t' d) T
  1. <script language="javascript">
    ( J! w' z7 k  P: s$ g
  2. if( top.location != self.location) top.location.href=self.location.href;; i) P6 z- a7 U2 b( z" g
  3. </script>
复制代码

" F! Q8 Z* b- u- {$ e& h- }* [
  1. <script language="javascript">. u; M  v+ v1 n. E, m# d/ r: G
  2. if (top.location != location) top.location.href = location.href;
    : b6 r+ k4 _+ u
  3. </script>
复制代码
, z# J4 Y* u  p* |8 E$ V  G6 r
  1. <script language="javascript">
    0 Q$ W# e5 j; O4 V+ Y$ k( }2 }
  2. if (top.location != self.location) {top.location=self.location;}
    & q: p8 \7 q7 a9 i
  3. </script>
复制代码

3 _4 x5 H" U+ {
  1. <script language="javascript">
    ; {4 ?# S9 Z# a8 ^; r+ H7 O
  2. if (top.frames.length!=0) top.location=self.document.location;; T' `2 ]+ j6 K  a8 E
  3. </script>
复制代码
不可靠的原因:/ o3 s; l+ n5 q: ?# N
当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。
6 P" K: [7 E. i, C, }6 u% 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>% N) L7 V4 D0 G0 I3 n# T2 m; R
  2. <script language="javascript">
    ) {. }8 ?+ F% ?: {
  3. var location="";5 H+ [+ v0 H* h( P
  4. var navigate="";. b( j. y! [- s- k- ^/ v
  5. frames[0].location.href="";
    . K. p& P/ U9 H8 U  a3 h6 Q
  6. </script>
复制代码
9 M2 D6 C4 R) Y- `0 V6 I0 V: z
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码

8 W  \, l6 W# }7 `, U: p9 G3 w  ~8 a- V' f/ y4 o
  1. <script type="text/javascript" charset="utf-8">
    / e8 _, f. X6 c0 y8 V  @, c0 B: A
  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 c3 m# w* v4 }9 v
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。2 U. G: ]9 G* E  M% k0 l* m
Meta标签方法
( \6 H3 [& P( k0 N
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法8 a- B. J! L0 c3 U# L
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法
/ w" E  |6 @& g- [
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法
! ?/ i5 O- h5 C4 X0 ]  p5 w
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码
: y) n3 W0 h% e9 b2 c! l- p
.htaccess方法0 Z% ~2 E- F3 u+ @8 @
在网站根目录下的.htaccess文件中中加一句) E9 Y+ Y0 Z, G0 z: a
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码

0 w0 {8 I% Q' t+ qIIS方法1 n* a" y; H! t+ d8 n
在web.config文件中加
  1. <system.webServer>
    , S8 B2 ^( m  k5 l& Z) ^
  2.   ...7 z3 H( t! P: B. Y
  3.   <httpProtocol>
    5 r" O6 ~" n- v, T; T
  4.     <customHeaders>3 _' k1 x& Z- u+ w/ i/ k
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      . K7 G  g4 h$ L: s7 Q
  6.     </customHeaders>    ' ]5 u; z8 c1 D" T# j9 Z1 V8 ^
  7.   </httpProtocol>  
    4 t8 w# Z! z" _
  8.   ...
    , {6 g5 Q  O/ ^3 A
  9. </system.webServer>
复制代码
1 G: ]2 N  I4 x
之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。
+ u  g1 i0 \- D$ E8 z( u0 z
  h6 u. g+ C" Y0 `; a: C8 X9 n3、推荐解决方法。  o1 p9 N* I* r9 X  H
  1. <script language="javascript">  8 e) h! ]2 M% H
  2. if(top != self){
    0 j6 L8 T  T1 p  ]/ A
  3.     location.href = "http://xp6.org/iframe.html";  
    . |, X! G* V" f5 D; \+ h
  4.     top.location.href=self.location.href;6 V% g5 a, }8 t  V# v' @' \
  5. }  
      V$ I3 R$ G) o: s4 p+ X
  6. </script>
复制代码
* q3 B3 S; S7 ^0 W# F. R0 T
将上面的代码复制到需要屏蔽页面<head>里面加载。! D2 B5 P6 x3 ^* h3 ]0 _* a
制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。: }+ b) t) T) @: g0 T+ s7 W
原理:
' Q; G; ~3 s# B9 z第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。" _" E5 m( \4 N; o
第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。; S+ V/ z: U9 V" T. S: u8 d
目前测试这种方法没什么问题。
- d! G; j* `$ k9 {+ b' E/ X7 P' ?( l1 Z7 d
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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