搜索
查看: 14501|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。
) x; B) }; B% R! {* d2 n! A) f这次讲一下如何防止自己的网页被别人iframe。
# E& L( Y4 c9 x+ v  W
0 q) P- a' |* _, B: W1、这些方法都可行,但不是太可靠。
: l$ Q9 L3 }) A. y8 x% e
  1. <script language="javascript">0 r+ @+ l0 {1 @# D/ F/ ^
  2. if( top.location != self.location) top.location.href=self.location.href;; X9 J6 J/ J! f: q
  3. </script>
复制代码
2 |% o- N0 y3 C" L) X
  1. <script language="javascript">* m7 k' a8 O) H
  2. if (top.location != location) top.location.href = location.href;
    $ B8 f" Z* c# w; J. A
  3. </script>
复制代码
+ U; Z# I" {" ]1 r4 E" g( m% y
  1. <script language="javascript">
    3 x$ K1 \  _+ N3 n0 o
  2. if (top.location != self.location) {top.location=self.location;}, w( e0 N3 Z5 j
  3. </script>
复制代码

6 [; I1 ?) l3 |* L6 K- f' |
  1. <script language="javascript">
    8 ]  `% i3 u" S. x
  2. if (top.frames.length!=0) top.location=self.document.location;
    $ b2 |2 Z' o/ C' s
  3. </script>
复制代码
不可靠的原因:
5 `8 ]# j: H% O$ q' b$ k, }/ Y9 Q当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。
* K5 k4 m+ m+ z2 \8 V$ ^$ J
  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>
    ' c5 _4 s+ R- g: l! Y5 ~& [
  2. <script language="javascript"> ' P  L4 X5 e0 j3 i" P. ]
  3. var location="";; O' @8 V# R4 U+ j/ I
  4. var navigate="";% y, l9 [4 j: a, K! T! w  q
  5. frames[0].location.href="";
    5 `* H' p: i0 L/ }$ w$ W
  6. </script>
复制代码
* B! e" p; [* A: ?7 Y
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码

1 I2 u5 e8 B' ^1 i3 e( q$ c% h1 N# C; t; B' W
  1. <script type="text/javascript" charset="utf-8">
    & V. c, X9 \  w
  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>');! A; }* ?8 G0 Y( J+ R2 \' `+ K
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。2 m0 n. W* q% q9 x
Meta标签方法
# X& E+ `# j' ~! X
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法
! ]" A) I0 x% ?  j( c( ~# K
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法3 I$ l4 B$ ^* \/ n) S; F# ?
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法
  t5 w) l& C" A
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码

* ?. P: _' {  T2 E4 k.htaccess方法
, k+ K, c8 V7 J- v$ r$ ^8 [* P% a在网站根目录下的.htaccess文件中中加一句
% e& R% H5 M7 f4 h* p! m8 Y: M
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码
( i/ [( K0 h4 v$ o+ e- |
IIS方法; c$ J; U9 F  C7 S$ K  ~
在web.config文件中加
  1. <system.webServer>/ z* L7 F3 S: E( E* `. n2 U: M8 H
  2.   ...
    % H: U+ A7 X, ]2 K
  3.   <httpProtocol>
    7 F& L- [6 l# _" X
  4.     <customHeaders>
    % V" F- f: f4 \3 v/ D
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      
    ) n  p3 ]. T# j. `6 W
  6.     </customHeaders>   
    : C' U5 N  N& B. S$ a, V" k3 e
  7.   </httpProtocol>  ! u. {% F4 G4 k$ o, X
  8.   ...( B( n4 v4 U4 u; `: F* [. ?: |: u
  9. </system.webServer>
复制代码

& a5 K7 o3 }# m1 Q之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。
# x; l/ Y, z& r$ `' B
1 Y. p  D6 Z5 R* L: }2 h/ K3 R3、推荐解决方法。
+ h, }3 ~: ~) H6 O
  1. <script language="javascript">  # P( o( v' ^# m$ P5 i' X
  2. if(top != self){$ a. T  i7 i* f. ]$ Z
  3.     location.href = "http://xp6.org/iframe.html";  ' H6 @2 {& m$ w: ^8 t/ ~) R# A4 N
  4.     top.location.href=self.location.href;( K! s$ G7 K4 Q7 j6 n& x
  5. }  
    ! U7 r5 s3 ^0 D  y( D2 C
  6. </script>
复制代码

4 G) |# q# {* T$ ^8 y& V% d2 g将上面的代码复制到需要屏蔽页面<head>里面加载。
5 V3 m. X9 Z3 M% \" n+ L+ P制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。1 B$ B0 q, x8 w8 x
原理:
3 X( R3 T* Z+ L第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。
9 t  N# k2 ~0 ?$ C# V) J/ l3 k( v第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。
( P* B- D, [# Z$ }0 z  R7 I目前测试这种方法没什么问题。& o7 @% `( ]$ K0 k

, }; I% I  V+ ?/ n
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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