搜索
查看: 14440|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。
) g0 b2 G+ B' [! h这次讲一下如何防止自己的网页被别人iframe。
' j' ]% u& P, j% I& f; m( \+ h; C: u& v+ g1 \9 @
1、这些方法都可行,但不是太可靠。
9 N: P# e, X4 l) F3 L8 T- g0 J( K
  1. <script language="javascript">
    4 D) U! H  T( f1 ?& j
  2. if( top.location != self.location) top.location.href=self.location.href;8 s" d* I9 o* r/ ^9 v* P
  3. </script>
复制代码

4 H- b# ^- R% c6 m9 |- G
  1. <script language="javascript">- b1 q9 \" H- R  w
  2. if (top.location != location) top.location.href = location.href;: Z4 z9 x8 q5 N; X& I3 h
  3. </script>
复制代码
  ]$ q& l4 C+ V( k& g
  1. <script language="javascript">0 ]& ]6 \7 d6 T2 O) z6 P* a! X
  2. if (top.location != self.location) {top.location=self.location;}0 }+ `* U6 P, ?7 E
  3. </script>
复制代码

0 H; N( ^& L( f' N# ^
  1. <script language="javascript">! x5 G! F4 U+ w. h6 k( b
  2. if (top.frames.length!=0) top.location=self.document.location;; E+ {% g' k/ y6 f
  3. </script>
复制代码
不可靠的原因:' V5 r  z/ F" m7 A" f
当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。6 v' Z% \: B# x+ j  J( F2 t
  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- Q' A1 Z9 ]8 f) k
  2. <script language="javascript">
    ( d% B5 g/ F8 Q
  3. var location="";
    2 g$ y+ U) Q* _8 s; i2 M
  4. var navigate="";0 j' M4 x! Q/ P# u1 B
  5. frames[0].location.href="";
    9 E# ]2 E7 C. [# T' O9 D+ u! w
  6. </script>
复制代码

8 {" [2 w( }% e* L
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码

7 m) u8 c: @8 T5 S
: C% O3 ]" H. c3 D6 X/ m
  1. <script type="text/javascript" charset="utf-8">, X+ [5 r6 y/ g8 V  {
  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>');
    " J+ j# \  i& h/ R( B( [
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。& L/ @; O! [5 }2 ^" H# ?2 J
Meta标签方法
  A, y) L6 ]1 Z) m
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法% [- x7 [8 j$ w8 b% @
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法( w% F$ `5 k/ J- G( Q7 y
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法
7 C; T! s# s; y" f3 [
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码

% m" G" }* V( ^% a; B* S3 h) J.htaccess方法7 y& q: Y) v' J* \
在网站根目录下的.htaccess文件中中加一句
( r, ~. D9 U  {2 F( O: w1 {- q8 N
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码

# D8 @1 p- j. `, N4 P( fIIS方法) {- d  p; w( M$ C4 k4 s. B
在web.config文件中加
  1. <system.webServer>: F# B8 A: s1 _4 r8 m3 j1 X  v
  2.   ...; s4 O, }$ m0 a. k, m( C' a+ y- q1 Q  y
  3.   <httpProtocol>* H3 V2 X0 p- j, `; o8 K
  4.     <customHeaders>
    , }8 u7 |4 i5 s- b0 \
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      / a, I& s% r8 m, n  }1 d: G
  6.     </customHeaders>   
    9 ?% F- Z1 s$ F; ?3 b
  7.   </httpProtocol>  / t  _& a* j/ _# A4 s) c; [
  8.   ...0 J! D' j+ |+ C1 G' u2 w$ F. V
  9. </system.webServer>
复制代码

$ v! x  X. U: X5 ]- _之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。7 R* q) Q$ V3 I, c1 m- S2 K) {5 W* s

) I; \% n" |* C, v' Z3、推荐解决方法。
- Z" n1 U" J8 {% x
  1. <script language="javascript">  + M6 J- J- ~, p
  2. if(top != self){
    3 }- S% X; w% [  {) N6 {! {
  3.     location.href = "http://xp6.org/iframe.html";  
    0 j+ q! [! N( ^  E. Q
  4.     top.location.href=self.location.href;
    9 X4 y1 v( X+ n4 j* q
  5. }  6 ~) N: U; E$ O. ^0 Y( p' V
  6. </script>
复制代码
1 H0 n0 i  B7 U4 P% u
将上面的代码复制到需要屏蔽页面<head>里面加载。' M& Y, [- ]" j) w
制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。
* K  f+ v% K5 f0 |% e% M原理:7 G- A, t6 P, D" S2 ^
第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。
# z# H5 Y2 Z) T0 M+ u7 A. o第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。
  e* X9 Y/ P* B2 X0 f9 Y目前测试这种方法没什么问题。
; j: F! ^9 v1 K, S; ]5 L6 J8 x. A( ?1 H7 p
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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