搜索
查看: 14395|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。
) o- M) D/ X9 U* r( L& y9 g这次讲一下如何防止自己的网页被别人iframe。) }: t; K4 _9 I; i1 L

* B5 M6 ~8 c9 O2 e( v: I: G& T1、这些方法都可行,但不是太可靠。
4 K# \4 x/ \" v) b; N8 O! {" A' W: Z
  1. <script language="javascript">
    ) b  ]; ?4 W4 m
  2. if( top.location != self.location) top.location.href=self.location.href;3 e$ A: L9 C* o! K0 y
  3. </script>
复制代码
' t0 x8 u& X6 i6 }
  1. <script language="javascript">" O/ B( V2 i4 Q% r6 [5 q
  2. if (top.location != location) top.location.href = location.href;5 @5 B* ~+ S: Q, I$ P
  3. </script>
复制代码
+ [7 c. q3 {) i! @
  1. <script language="javascript">
    * f2 j1 v. X5 `+ c
  2. if (top.location != self.location) {top.location=self.location;}
    ' B8 k3 H" ]0 d& |
  3. </script>
复制代码
: Z7 @2 L$ m4 g) h) F# u& ?- ^
  1. <script language="javascript">! Y; O. V) [! f4 G" W
  2. if (top.frames.length!=0) top.location=self.document.location;
    0 H) t5 J4 i" D& i. J
  3. </script>
复制代码
不可靠的原因:: W! i, N+ @9 ^6 y( f
当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。3 R2 u! m0 R5 z& [3 l8 h! d' {
  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>. g0 {: d1 \( g: ?, B) P9 [! s
  2. <script language="javascript">
    5 n0 B% n: G1 i. X- h
  3. var location="";
    ! y1 b) r- R- W% g% Y: i+ l
  4. var navigate="";
    . B1 j& j! C3 M8 ]% H9 u% U' L" `
  5. frames[0].location.href="";
    ! U. c% M2 T: u/ n5 I0 ^4 m
  6. </script>
复制代码
. j" y- I3 {* H8 k
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码

  P; F# \. C; w" l
% y/ W# V; r! E7 a9 O
  1. <script type="text/javascript" charset="utf-8">
    4 g. N5 ~6 I; E9 C' v3 @
  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>');/ t5 Q& Z/ k; |: G, O
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。
3 D- p& c) B! Y0 XMeta标签方法
% l/ F- [$ x. @' E8 {+ |
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法: I2 Z/ M) E) Z  f
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法
1 c* q4 x' \/ P, m/ R
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法9 ]3 }! Q: N; d
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码
9 }% L! o) D4 l) {# D
.htaccess方法
+ r3 m" \& ?4 o& q/ P: k在网站根目录下的.htaccess文件中中加一句
+ r+ {1 J2 V1 y% i6 @; i4 n  F- e
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码

2 d( j& D. T* v! e% }1 a8 P! @IIS方法
6 A5 P; i9 D6 n# D) i在web.config文件中加
  1. <system.webServer>
    5 u5 g8 F5 c' T  [- U
  2.   ...+ s- ]8 w' I3 a0 _; r) b( g9 Q
  3.   <httpProtocol>
    0 u5 G8 i' [' d9 n
  4.     <customHeaders>0 j2 J+ Z" g% s4 u5 S2 n
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      ( l- x- E+ J. p+ Z6 T( [" W5 |
  6.     </customHeaders>    " E/ l' ^7 ?5 }8 T, [
  7.   </httpProtocol>  * Z. e, z0 A# @* z6 G2 V
  8.   ...$ N# g% l( j$ a7 A8 x+ E- E) {( O0 D
  9. </system.webServer>
复制代码

5 j$ L' j* b3 |3 J' S之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。
% v* v% [; R. c% g3 E5 p0 \0 G4 j8 T0 u7 F
3、推荐解决方法。% n! t) i9 _% _! l/ K, h3 j. G- F
  1. <script language="javascript">  
    1 l: M. S4 u9 [, K$ P+ T
  2. if(top != self){( z7 s7 B! V2 j  z' z& y
  3.     location.href = "http://xp6.org/iframe.html";  
    9 x6 P3 d2 l% E8 w9 x$ G
  4.     top.location.href=self.location.href;9 _3 o" G9 v0 ?/ C3 ~# [8 L
  5. }    Y: j/ c5 U3 q$ Q
  6. </script>
复制代码

' r3 r1 R2 g$ k+ C# g6 D将上面的代码复制到需要屏蔽页面<head>里面加载。# O, _5 x6 [9 q" K7 c% H! P
制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。' x2 L. x" w( {$ a
原理:' e/ ^" t- I) l* H
第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。
+ i$ {" H5 K$ U3 L4 |) f1 ^第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。" L- h0 ]/ K$ L: ~9 \8 n
目前测试这种方法没什么问题。9 N  _7 K2 l" ^' [/ j1 h0 Y
: H4 ^! _2 ]: y# i- u. E1 L
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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