搜索
查看: 14953|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。: p  t, F6 r5 E0 Z/ {" h
这次讲一下如何防止自己的网页被别人iframe。' F2 C2 A/ A1 H9 N! G0 X0 \

" l* R6 T/ H6 j. x/ h5 h+ ~+ S: Z9 z1、这些方法都可行,但不是太可靠。8 T9 C+ _2 G9 l
  1. <script language="javascript">
    ( S% K4 `) C- b% f6 n7 Z5 C  C5 Y$ Y
  2. if( top.location != self.location) top.location.href=self.location.href;" r& [( T9 L4 l6 t3 T
  3. </script>
复制代码
, h; Y% S* y' h# g% y+ s7 i; F
  1. <script language="javascript"># Y4 B- P( H* m" R% T1 ^
  2. if (top.location != location) top.location.href = location.href;
    8 b& d7 T& K  T
  3. </script>
复制代码

) A  B0 ?1 k6 B( }( B& }
  1. <script language="javascript">5 P! r! D2 O- g- c9 t: _: Y% j8 ~
  2. if (top.location != self.location) {top.location=self.location;}. [! Y) ?2 E( ?. x+ }6 N9 D" z
  3. </script>
复制代码
* y3 }0 H" h/ J; k, _2 \
  1. <script language="javascript">& R. |& B. l5 @) `6 `
  2. if (top.frames.length!=0) top.location=self.document.location;, C1 n2 \0 Z5 T6 q5 W% g9 o% D( ]
  3. </script>
复制代码
不可靠的原因:
) r- W, l5 c8 z0 S当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。
8 ?; @0 p8 I& }2 L/ e/ I* _
  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>& i* h1 U+ V7 [& k5 _) F
  2. <script language="javascript"> 7 z) J  y( q0 m' F
  3. var location="";: P) |5 m5 n1 R
  4. var navigate="";
    5 ^$ O1 H# K, ^) L
  5. frames[0].location.href="";8 F3 y  C4 \0 F
  6. </script>
复制代码

. O4 W3 J, t& L1 p( U; n/ S
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码

5 l. C' o* ]* }4 ~
1 |0 }7 n! m0 [
  1. <script type="text/javascript" charset="utf-8">2 [/ k! d/ M6 @/ [' Y! t" |" v
  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>');
    , {) k  J0 X' O9 f" a
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。
) Q4 d2 @' Z; E/ U* kMeta标签方法; e" l+ Q# {2 n; c# X
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法
. _1 a. M2 K& T1 Y9 w! c! I
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法
3 Z! l: R6 {! f. O7 k4 A  k
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法
; ~# S6 r# w6 C+ a& g/ V" X
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码
9 Z7 N$ D/ {! ^6 H
.htaccess方法1 O5 m' }' Q: k) g' ]1 S: ^
在网站根目录下的.htaccess文件中中加一句
& ^' f+ Z' u3 G* B4 a1 `4 B2 B4 ^
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码
! U) h! I3 m' B8 ~' O# I1 |
IIS方法
" ~, r2 V! u' T, p; T在web.config文件中加
  1. <system.webServer>
    0 u6 L, d, \9 P0 i
  2.   ...! [) `* |0 w* l6 Z8 z9 Q
  3.   <httpProtocol>( L3 l2 H* s# k3 _$ W5 y7 G
  4.     <customHeaders>
    2 i0 O" \0 [) Y' h
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      
    8 z/ I0 s& B; ]0 H, @4 N
  6.     </customHeaders>   
    3 u3 a8 @  U6 n& B+ K5 }2 r, Y4 y+ z
  7.   </httpProtocol>  
    ! D6 F5 W' l, E- W3 b# ~
  8.   ..." M& c# ?. }$ _2 G
  9. </system.webServer>
复制代码

; l: P7 m2 v* W& F5 F  P之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。/ m$ Y  @, O5 N& k$ j7 O

/ l, @# R# v' c$ b3、推荐解决方法。2 O5 H9 l- H) C* k8 Q
  1. <script language="javascript">  # y: F+ U8 q7 |9 i  @
  2. if(top != self){. g% Z  V* P' h* }0 q/ y
  3.     location.href = "http://xp6.org/iframe.html";  & E# M4 w/ H, g) Y4 }- k, {
  4.     top.location.href=self.location.href;- C1 {7 o9 n- q" S  a& m+ x3 n2 `
  5. }  
    5 ^/ l) y. A. h4 j1 q. y8 f9 h% w* ?
  6. </script>
复制代码
0 W7 Q! T3 l" T6 i6 x8 l+ a' W. w
将上面的代码复制到需要屏蔽页面<head>里面加载。
# p; K; K7 t# S# x! F制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。
: H- `- ~8 G& x0 w! D8 t1 u原理:
' o8 e  n+ x' r第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。! x# J: H  W/ B: ^1 B1 B
第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。
# j3 e4 J7 A; }3 q9 _9 R目前测试这种方法没什么问题。' L: b; z# b* G' K. a+ K

% L* h" i$ P% a" h4 }
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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