搜索
查看: 14613|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。
- F* a! _- G# Y0 u这次讲一下如何防止自己的网页被别人iframe。/ C/ j0 ^  N( W+ G
; s+ g; e  ~) C6 I# w5 z& j9 P
1、这些方法都可行,但不是太可靠。, u* ^1 F1 j' f) c
  1. <script language="javascript">
    5 a. w8 i7 p; s3 d" M' M* |
  2. if( top.location != self.location) top.location.href=self.location.href;
    ' u, q3 s5 M+ \3 {
  3. </script>
复制代码

# p* C/ l6 ~: G3 X* K- l: b$ @
  1. <script language="javascript">
    - K7 K. P3 f! Q, e* U4 [: u( H. z$ V
  2. if (top.location != location) top.location.href = location.href;% z; B$ R- F2 q; S% i& T6 O- w
  3. </script>
复制代码

' E4 ], p0 L( N& w% i- N% ?
  1. <script language="javascript">$ |, \( D2 w4 j" T1 T* p
  2. if (top.location != self.location) {top.location=self.location;}
      E! a& q! Y7 e6 ?* L; g# [
  3. </script>
复制代码

- _4 V9 P: ~- M7 I% E3 q% ^
  1. <script language="javascript">
    8 g8 d1 i# x1 H# X% E, J% p- g
  2. if (top.frames.length!=0) top.location=self.document.location;
    7 k' b8 l7 G+ H) k
  3. </script>
复制代码
不可靠的原因:
: ?% U1 B9 G$ e当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。( S1 A# g. D) |7 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>
    / x1 d5 K# ]9 M; H
  2. <script language="javascript"> 4 ^5 n! z  a, I6 R* w
  3. var location="";9 A% f; ^$ c/ ?5 Q% I8 h2 T# b0 a
  4. var navigate="";2 J4 N; s( C5 j  H. h
  5. frames[0].location.href="";
    * @& d6 u; x4 G6 s8 [: V: Z
  6. </script>
复制代码

1 g) k5 U3 Y" \
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码

2 i) U- H* M! h( D: Q& J; {+ k% {- _: r6 p8 Q$ x
  1. <script type="text/javascript" charset="utf-8">
    / g! G) B: ?" t* j9 D
  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>');
    " d$ @  J5 J! |. g# o
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。# e3 C& w8 s* B, m0 Y, ^( K! d
Meta标签方法
$ M" s* b9 S1 Q  }# Y% `0 O7 K
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法
6 O$ i" [+ J; g5 p* u
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法  u& p7 P" i. l0 E+ Z
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法# I2 x$ _) C: U6 [- Z8 \
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码

8 s+ Z- J/ J6 u.htaccess方法" t6 K$ u* m1 q1 E9 |. u4 x( C4 R' j
在网站根目录下的.htaccess文件中中加一句
5 K9 [% e( l% H! [9 ]
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码
( A9 R% o# j7 i3 X4 I( B5 h( `1 {& O
IIS方法9 F0 Y; o9 s8 ?1 c0 c* w
在web.config文件中加
  1. <system.webServer>
    9 H9 O7 Y1 u# A# z9 X
  2.   ...
    ( j. ]5 ~: r4 \; E7 C. w) y
  3.   <httpProtocol>
    0 @0 j) _% A. l; @
  4.     <customHeaders>" V9 \) x4 O/ s  E, }
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      
    % E) N7 B+ ^. n& `
  6.     </customHeaders>   
    $ ^7 r( I% U& c0 A
  7.   </httpProtocol>  " U$ ?& g# ^' T# S
  8.   ...4 l7 p/ ^3 E2 M7 l6 Q3 Z$ p
  9. </system.webServer>
复制代码
' I- U' U/ i$ ]' D( E: R9 v
之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。
6 Z, Z3 I! y# {# J+ U3 N
0 V) T; A; I3 Q3、推荐解决方法。* r1 k9 |6 B6 y$ X8 p
  1. <script language="javascript">  / g4 [7 u4 F* l( G6 a3 u3 X
  2. if(top != self){
    3 w% O- [/ |1 {& t" S8 c
  3.     location.href = "http://xp6.org/iframe.html";  - n: i0 O% I/ n9 x
  4.     top.location.href=self.location.href;
    1 m' X( e2 T9 q
  5. }  
    + h- H4 n) ~/ k4 W4 _6 O$ x& P9 E
  6. </script>
复制代码

5 L1 A; ?# ]$ V* S将上面的代码复制到需要屏蔽页面<head>里面加载。7 X: ^/ }% h' k* ?1 V! M' C
制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。
; I' u+ q) @- |0 @% k# R( F# h1 i原理:$ c. b$ G! u0 [6 E0 m# K0 s
第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。" |# L+ f& H% Z$ I' }
第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。
4 n5 a* N/ \' C1 ]4 q4 v! E4 k目前测试这种方法没什么问题。6 s% b9 `) Z, c, r" |/ s
. E9 J) l! d# e9 f5 c- i' n
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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