搜索
查看: 14398|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。+ A% N& U! y1 F+ ?' p1 @- a
这次讲一下如何防止自己的网页被别人iframe。
; w. |; g/ \9 Z( D: @' `+ W$ w, z. w3 r. E+ Y  X. G
1、这些方法都可行,但不是太可靠。, c  n  x& {, f: n2 d6 ~( v) D
  1. <script language="javascript">" Q6 x. K2 f: X) o* V9 u7 B2 x
  2. if( top.location != self.location) top.location.href=self.location.href;
    : S0 I: K  p! {6 K* T, X
  3. </script>
复制代码

7 G. c+ p  q, r3 b
  1. <script language="javascript">1 N% y- F) M# c, d8 c" |! `* N
  2. if (top.location != location) top.location.href = location.href;
    / d5 x6 s, w; U" k, k2 l; D- Y' o; o/ E
  3. </script>
复制代码
0 L. h  e* ~; T  ?: I/ C" ]  A
  1. <script language="javascript">/ ]1 X8 A) F& w3 p
  2. if (top.location != self.location) {top.location=self.location;}8 n6 B9 F6 E& Z3 L
  3. </script>
复制代码

# u; s4 P6 m! d$ |5 A9 G
  1. <script language="javascript">1 ]' s' F: O4 y. O9 R
  2. if (top.frames.length!=0) top.location=self.document.location;
    " N  V* R% `: H; v! I$ |& Z
  3. </script>
复制代码
不可靠的原因:/ R5 C- l. t/ L4 t" I+ D
当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。
$ l) j  `7 w, ^2 b7 {
  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. l4 a: _5 K
  2. <script language="javascript">
    ' G4 f" X; e( i/ E! E; u& l( R
  3. var location="";: {& A. j+ v# f
  4. var navigate="";
    $ ^. Q& x! ]3 h* r1 X
  5. frames[0].location.href="";
    ) l7 u" T2 T) w) H6 _$ |; F! e
  6. </script>
复制代码
' p4 J7 b+ R& N: x) y' W% L2 C  j
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码

1 `9 \0 c$ _2 J$ V. w4 G1 X$ m1 L0 S& c3 }9 {4 P
  1. <script type="text/javascript" charset="utf-8">
    $ Q) d! N$ q7 S9 D5 P( Z( Y/ ?
  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>');
    # y% o/ i' Q; R% Z: ^- V
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。
& t& _' k! g& g# y0 Z' ]# MMeta标签方法( H: ~. E' U4 Z% v/ R+ a
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法
* M& y5 J7 |6 y. H3 [
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法
) _! a6 M# R# T2 E" A
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法* Z* I7 Y  O8 v. X* `, V: x% n
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码
5 J# O) x4 j# B, A
.htaccess方法
/ {7 a; s. E2 A6 q0 g+ p在网站根目录下的.htaccess文件中中加一句9 ?+ q- ^6 U7 j* S3 F6 q) y0 l) B
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码
0 N+ `7 g" f2 p2 G" X
IIS方法! v5 w+ X  F% |0 t1 D
在web.config文件中加
  1. <system.webServer>, n' i1 Y# [2 A& u, }% y6 G8 Y
  2.   ..." a0 [6 D0 L- |+ B5 ?
  3.   <httpProtocol>! w% o3 A& i8 K2 z: q
  4.     <customHeaders>- Z% t- y* y8 Q$ l7 r0 z% y# |
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      $ _/ Z+ O1 H9 M, q
  6.     </customHeaders>    # c0 ^1 U$ U. R, f# b
  7.   </httpProtocol>  
    6 a  D* H4 K1 i- I) u- f1 v" y
  8.   ...
    4 u" @1 D; E6 R& m3 c
  9. </system.webServer>
复制代码
6 Q+ o2 A; Z1 [2 }
之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。; z5 z7 e9 A! l

4 p; r& n9 |/ I. q; _8 U3、推荐解决方法。
2 A  m2 Z" r$ I/ j% I$ }( _
  1. <script language="javascript">  
    * E( G- I" x: v' l9 G: U$ K( q
  2. if(top != self){
    6 J. o6 x7 n) M# o' ?0 {- y' m1 U
  3.     location.href = "http://xp6.org/iframe.html";  . R/ G" b) H" y4 x  E4 Q( e
  4.     top.location.href=self.location.href;
    & P6 J& o7 n# v. i) ^" E
  5. }  0 n8 ]. ~3 P% r' w6 S5 d
  6. </script>
复制代码

9 e" P4 H( D9 V4 P将上面的代码复制到需要屏蔽页面<head>里面加载。# O8 N+ n' f( Z3 U; u
制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。
; H( f/ |  E( R5 {. R% c原理:" l: E3 `! D4 j. b2 A
第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。- k2 h! f$ L% F0 c/ k' K/ |2 g7 ]! v
第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。
* T& n5 e* S4 G& @0 _* Z: L. P目前测试这种方法没什么问题。
7 f5 E* m5 i1 Y/ ^7 k: W9 j
0 G& Z& I2 K. ]# ?& B* o" T
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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