搜索
查看: 14455|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。. o( U& x1 l% v: t
这次讲一下如何防止自己的网页被别人iframe。
$ @& _9 ~, F3 Z' p: q. [. [' i7 O# {
1、这些方法都可行,但不是太可靠。
2 v7 L- S' L8 C- q2 n1 @! L
  1. <script language="javascript">7 J6 ?/ M6 ^- T; o4 n
  2. if( top.location != self.location) top.location.href=self.location.href;0 R( y9 e9 O# g3 L; h4 I
  3. </script>
复制代码

8 @! p# e; e/ `) R9 c! i
  1. <script language="javascript">
    " j$ A: @) ~6 v  m' F2 L
  2. if (top.location != location) top.location.href = location.href;
    ( j+ ?: G' _! ]
  3. </script>
复制代码

9 \, L) l: g  O5 b4 `, _4 S# {
  1. <script language="javascript">
    , \8 t$ {( o9 h/ D# X0 g3 O8 |
  2. if (top.location != self.location) {top.location=self.location;}7 V$ U& B* w! ]. [; L: e/ _3 N* E4 T
  3. </script>
复制代码

% T+ q, O4 ], R: C9 @% }
  1. <script language="javascript">
    / H2 k/ p7 `1 H5 C( [0 B
  2. if (top.frames.length!=0) top.location=self.document.location;+ [' R2 [$ p4 W" K, t. c' J& \4 P
  3. </script>
复制代码
不可靠的原因:
) F, ~" x4 l" S7 {) V& w当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。' f7 I, Z" _. ?1 l4 p& F
  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>' X- F# u( \# b, O/ \
  2. <script language="javascript"> % ]4 P# u% L& h0 A! A' K9 r. x
  3. var location="";" F0 m9 `" R3 o# R% a: E
  4. var navigate="";1 D2 p3 x0 B/ f& M+ A% l2 J; r+ S
  5. frames[0].location.href="";
    6 w! Y5 f1 A+ M" }& H$ o
  6. </script>
复制代码
2 s7 S  D+ I9 d
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码
" {& U8 J% H; {0 @8 J" j2 D

* C8 U5 Y4 t2 ?9 i- C
  1. <script type="text/javascript" charset="utf-8">; N) r: j, _& t; H  t9 h
  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>');
    4 i* [6 ~% B  f9 w. D- |. C2 C2 q
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。
9 o0 P! S4 L% \Meta标签方法7 V7 B1 e4 U. W1 m' j8 s5 u) t) J& t6 }
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法" v& N6 `! X$ j# O8 U3 y
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法; x" {7 j8 M5 c6 R
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法
" e( E; w9 V4 L# ]
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码

5 L1 K" [/ k% `$ N0 j.htaccess方法
- K- k- J0 Q% l# q. U在网站根目录下的.htaccess文件中中加一句4 S0 w+ T( a4 \
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码

$ v6 p5 H  c# g" E# \IIS方法
5 C) \% {, G. y8 Q% o4 I在web.config文件中加
  1. <system.webServer>
    ' s  F& K8 P7 g6 M! R+ H9 M
  2.   ...
    1 c: }0 q2 J5 [* ~8 S
  3.   <httpProtocol>; z$ D) }) ~; R' X' E3 m
  4.     <customHeaders>
    & _, M! K6 O: A9 ]
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      2 g6 a" }2 \2 v' D# ~4 ?
  6.     </customHeaders>    3 o  P( O7 O$ O( o' L9 ?; k+ I
  7.   </httpProtocol>  ; F+ G+ O& `) e0 y$ n
  8.   .../ I/ m& L! _& ^
  9. </system.webServer>
复制代码
' {( p6 C! b2 B; M
之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。
* n2 \% R; f- |6 j  P* m! x
8 q# t. Y5 e; m3 q3、推荐解决方法。1 e/ @" d( Y" G
  1. <script language="javascript">  
    , t9 m/ a) p. U: k# F' q
  2. if(top != self){
    & m0 m5 @2 S, [* u" g' _
  3.     location.href = "http://xp6.org/iframe.html";  
    " G! @9 a) |2 }# j
  4.     top.location.href=self.location.href;+ G# z1 H- f- W1 B" s, K! h
  5. }  , P$ m& ~# \2 E! L2 _( C* E
  6. </script>
复制代码

2 {- ^9 P$ Q3 E1 O# Y: z9 I将上面的代码复制到需要屏蔽页面<head>里面加载。
' c2 l2 {. g& Z% V制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。6 E% K% ~- V3 W9 J0 X7 s
原理:
( E% r6 H* F: x, T第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。
0 s5 {+ L4 W1 F1 n* G$ Z7 T; F' c第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。
7 c, T, l, s1 Q2 H7 O目前测试这种方法没什么问题。
: ?, }& [& }, |+ I& L* m' v- v# [0 y8 n2 N
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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