搜索
查看: 14669|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。" D2 x) i( ?3 `' \" t( L8 k5 I
这次讲一下如何防止自己的网页被别人iframe。
2 ~6 K: G/ b, F5 I( h4 `  I( p5 D* n8 n% n) Q& ~
1、这些方法都可行,但不是太可靠。
9 w7 [: Q* G/ W) E
  1. <script language="javascript">/ ~9 S5 W' J/ k4 C
  2. if( top.location != self.location) top.location.href=self.location.href;
    # ?; s0 m( b; I7 X, C* m
  3. </script>
复制代码
6 H# X, @7 C5 c7 ?- g
  1. <script language="javascript">  A3 K3 J+ l1 {! [9 R9 K
  2. if (top.location != location) top.location.href = location.href;- o5 G6 ^5 W2 g; o
  3. </script>
复制代码

1 Z# J' _. a( l2 z
  1. <script language="javascript">
    ! }# f+ N6 j: B% K! ?5 \
  2. if (top.location != self.location) {top.location=self.location;}$ d$ x/ p* p5 o" g  B- P; c: o
  3. </script>
复制代码
! Q5 ]+ P! q6 j
  1. <script language="javascript">
    , j5 U& e9 T& P  ~$ R7 t' B
  2. if (top.frames.length!=0) top.location=self.document.location;
    : @" W" s( D$ e' U1 _! X& N7 G) {  }
  3. </script>
复制代码
不可靠的原因:
/ |* O* v- F# C! j+ r4 D+ P5 D4 L# }! d当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。1 a& g9 Z6 ~" g: C7 }; [. 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>' o# M, U" T( k1 X: p3 L
  2. <script language="javascript"> * @! |7 h' T3 h+ H+ n; s
  3. var location="";" E$ {, ~* I3 `3 q) }: N) @, ?) F) N
  4. var navigate="";
    + ?; B$ O% o: `
  5. frames[0].location.href="";$ n) _; y) j# J! C
  6. </script>
复制代码
& \; u. E: `+ ^4 p3 m  @% c# s) x
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码

- _  z+ L. e* L$ W7 {" K  l$ O
& g/ j+ O: H7 {% o+ g
  1. <script type="text/javascript" charset="utf-8">) \3 y6 ]  ^5 b
  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>');0 }4 E2 r8 r9 w' t, s& o+ b3 u: i
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。
+ n* _" {+ [: W6 CMeta标签方法2 r* G4 Q+ c- L  c3 L
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法
" B# F$ {; O/ w1 u
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法/ w& M6 i; s' ^, |! I( J* _
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法5 x" S* g1 {/ B- w
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码

5 D& X# P% b7 f: @# ?5 X8 c3 |.htaccess方法
/ ~7 n7 B- z2 z/ |- h- {9 A在网站根目录下的.htaccess文件中中加一句, F' W$ L- g: U1 g
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码
" z3 |) t2 D9 K# Y
IIS方法
- c* K. B9 d  g* W4 Y4 w在web.config文件中加
  1. <system.webServer>
    * d7 {4 P* f# H3 n1 Q
  2.   ...
    ! p! E# i% v0 c
  3.   <httpProtocol>5 V* ?7 X  F1 l, b2 O/ C
  4.     <customHeaders>
    : g; p2 ]# \7 y5 B3 |$ B
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      1 x& x+ ?1 G/ X
  6.     </customHeaders>   
    + I* u# ]: z* ?; _; ~
  7.   </httpProtocol>  
    & U; B$ ?; c) |& H! ]
  8.   ...* Y( ~+ W; O7 g/ }# l
  9. </system.webServer>
复制代码

! d( Q5 f2 e" v# m" z. f7 P之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。* u  }9 s7 L) u. I. @5 E# e
: j; u, U0 Y# S4 J
3、推荐解决方法。
7 r- b1 ]5 |$ s' r* F
  1. <script language="javascript">  $ Z$ d* y! W  V5 t: H" L
  2. if(top != self){$ O: |/ r8 S3 W! d- b7 g
  3.     location.href = "http://xp6.org/iframe.html";  
    9 y6 c) t+ u- q1 g% }
  4.     top.location.href=self.location.href;
    . j& F& }0 T0 ?/ S: x
  5. }  # M* B# v+ I3 A( r$ d# {: p  B: h$ |
  6. </script>
复制代码

& v2 O0 O8 g$ ~$ }7 i) H6 q3 Y2 q将上面的代码复制到需要屏蔽页面<head>里面加载。
" Y3 k9 u3 \  l4 W制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。" c' K: X& z6 z1 K1 A3 r
原理:( Q: K/ }+ V* H/ J! @# M2 b
第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。
1 e+ X/ G8 C; j) Y  v5 P* o, r& ?第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。
) ~4 S/ V; q/ P1 ~& p! p目前测试这种方法没什么问题。
5 n! W5 Q6 [$ {, N/ k5 h2 @+ r2 \. S  g$ R; V+ S. M5 v
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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