搜索
查看: 14574|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。* @  A( u  ^2 W% g
这次讲一下如何防止自己的网页被别人iframe。
9 K3 {; g) d& W8 _, d; i5 Z
& F) o" o9 Y  F6 X( G; M) z1、这些方法都可行,但不是太可靠。
7 [6 r) b6 e$ {5 L& z' T, n
  1. <script language="javascript">
    ) S% L: F5 f% `( r# L1 P% f2 k2 k
  2. if( top.location != self.location) top.location.href=self.location.href;* u; {( e" @$ _: c8 m7 v; T+ }
  3. </script>
复制代码

( ^" x; K" \3 M) n: ?! }
  1. <script language="javascript">5 I( ]  ~2 P; B; S: O! O
  2. if (top.location != location) top.location.href = location.href;& n) w8 G+ T$ n& c' H) Q
  3. </script>
复制代码

1 Q/ j; S" w9 l) J$ ^- X
  1. <script language="javascript">  W8 W" {/ l  s$ ~, h/ z4 ]0 R5 h6 {
  2. if (top.location != self.location) {top.location=self.location;}
    * y8 t; c$ d) ]
  3. </script>
复制代码

; z! J% V1 I1 z; w0 E. {
  1. <script language="javascript">. \! o# S0 j; B0 f1 D# }$ M/ T' ^- ?
  2. if (top.frames.length!=0) top.location=self.document.location;: }! i. `- U1 t  o5 d
  3. </script>
复制代码
不可靠的原因:
6 i( G1 g3 b4 J' K# p# |当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。& z0 {! G% I3 Y" b3 L* p! {& o3 U
  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$ i* e2 \+ Y4 q2 g( k
  2. <script language="javascript">
    ) z1 }0 s/ ]8 m4 e4 o# G1 I
  3. var location="";0 X" |5 t9 Z+ G
  4. var navigate="";0 @- l8 D9 Z. H9 A4 g/ w$ N" Z# [
  5. frames[0].location.href="";
    ) r. P" X; q; V" p( h+ h1 t
  6. </script>
复制代码
, e2 G1 v' [7 y% z
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码

3 A4 F6 ^$ ~2 u7 [6 G/ c! n
7 {8 C$ c; Z  x9 X
  1. <script type="text/javascript" charset="utf-8">
    . N7 Q' l6 E" S, A& C
  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! ~3 E* j; Q8 G  M9 x
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。7 ?! ?) m5 X/ P- l
Meta标签方法# S+ I2 B) _1 ~& \) _6 G( f
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法
) e# f. Y) I! P" w& C7 i
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法
7 b6 s9 c8 D. A' J9 H4 ^2 `( q" Q6 h' q
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法" n7 y1 S' `" W0 d# t
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码
! A2 E+ y$ r2 b. R) R
.htaccess方法8 A9 E5 j( Q3 Z
在网站根目录下的.htaccess文件中中加一句
+ K8 D( a% O  F# p. B' C/ Q5 B" c
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码

2 s; F2 |: E; }/ a& E6 iIIS方法
$ L: n8 K( w+ i/ M3 e6 O在web.config文件中加
  1. <system.webServer>6 B, e% z+ d3 b8 P8 U
  2.   ...
    ( d* C9 x0 ~1 i( Y6 |7 N
  3.   <httpProtocol>; j- ~* O2 q1 m9 W) ?) q
  4.     <customHeaders>; ^) z; n. w' D7 V
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      7 E) X# y! Q* z
  6.     </customHeaders>    - M) d4 e! t5 O& a: \# B
  7.   </httpProtocol>  9 N' p* {7 R% I' }
  8.   ...  M5 K6 o! a. H9 S
  9. </system.webServer>
复制代码

( V9 V2 q& _# y6 k2 Y/ r之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。
2 \6 u# s3 T, f/ ^; M, B& h
. L! [2 e% Y6 D; ^+ j. r2 E& i3、推荐解决方法。* S9 b, N+ v3 Z
  1. <script language="javascript">  & R* L7 j( Z4 z$ |) v: F! r
  2. if(top != self){
    6 T2 I* r, Q8 C& m- q
  3.     location.href = "http://xp6.org/iframe.html";  6 Y2 r7 ^  i3 Q9 e+ X
  4.     top.location.href=self.location.href;" s' G# K* A8 U1 T: u% Y
  5. }  
    , r4 w- U% B  a0 H: a; X: f
  6. </script>
复制代码

5 i1 C" a; r8 Z, r  J6 X将上面的代码复制到需要屏蔽页面<head>里面加载。$ J- l. J6 Z( k' `/ ^) j0 m
制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。1 W7 J) K, q* V2 X
原理:0 E9 O& s( z6 j& M4 O1 c6 v
第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。
# X1 D* |; j# F0 y. c/ x7 z+ |第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。7 V( {8 a4 R, `9 D
目前测试这种方法没什么问题。* E9 W2 {% e% S5 x0 S2 N( k
$ r% z1 T6 p5 ]" C9 ^) _" g8 {
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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