搜索
查看: 14430|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。
  F% ]# u3 \2 p7 W- c这次讲一下如何防止自己的网页被别人iframe。8 K; S, ?  e$ @4 x! ?2 ]7 K2 l8 D

0 Z+ b4 ]& G  w1、这些方法都可行,但不是太可靠。
3 R- Q$ \. M$ Q& g
  1. <script language="javascript">$ ]1 ]9 k9 Q+ D2 g7 H' e$ o
  2. if( top.location != self.location) top.location.href=self.location.href;
    & K4 C8 V5 n; w: P
  3. </script>
复制代码
0 c, r. i, L/ O" D
  1. <script language="javascript">
    # g1 g3 W$ W: u
  2. if (top.location != location) top.location.href = location.href;
    3 L' l6 h- J8 Y
  3. </script>
复制代码
$ Z, G" Q$ a0 X# h- s* }
  1. <script language="javascript">
    3 y! ~. a  Q( D) s
  2. if (top.location != self.location) {top.location=self.location;}' {! F. z6 a' U
  3. </script>
复制代码

! z; L9 o6 m! B, a8 d
  1. <script language="javascript">
    8 C  B  f1 E: j' J$ f9 \) I
  2. if (top.frames.length!=0) top.location=self.document.location;
    ! v3 I8 b: f- G( ^" z4 h
  3. </script>
复制代码
不可靠的原因:: j9 f/ R& b7 j5 i
当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。
9 T' @; W: ]" h. S4 J; e
  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>
    + J: u0 Y; C# X8 B1 u
  2. <script language="javascript"> $ f1 n' h$ |- x. J. Z* F9 f
  3. var location="";  w( z/ f4 M5 S& @5 x
  4. var navigate="";4 k1 r& @0 u0 u9 [
  5. frames[0].location.href="";. E' M# S0 M- r' R6 O9 S  Z
  6. </script>
复制代码

# `$ r. z! _- I& F% Z0 X
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码
. ^, v5 J9 V7 W, r( N

" c/ A1 d0 q3 A8 ?2 _1 T- E% Z$ v" q* ^
  1. <script type="text/javascript" charset="utf-8">
    ! s- Z* k  k" [
  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>');
    ' G9 o5 j$ S. p5 q9 ^5 {
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。
2 ]$ k( C+ N. F* L3 h  k( L4 G; gMeta标签方法
8 y1 n5 c2 B0 \5 R5 N! C& i7 A$ _, ^
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法4 E% T0 q: r7 O# i
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法
% y# F8 K' D; O; X; o+ K7 z. |: Z
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法6 _" ^; H) l  {$ d' V: ~/ z
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码
1 b3 l2 b/ S( v) O, A: X
.htaccess方法" ^  U4 a" E' y/ ?
在网站根目录下的.htaccess文件中中加一句
" V5 `( d$ Q6 ]9 d2 V' V# F
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码
% |6 ?# h1 M* A
IIS方法
& V0 K& ~. n  y% _, L/ o在web.config文件中加
  1. <system.webServer>7 t" V5 z' y2 R( m7 j% Q( p8 O/ E9 C
  2.   ...
    % l  C7 P& @; U
  3.   <httpProtocol>  p/ ?+ K" i* H& v
  4.     <customHeaders>" P' C& @% O+ b1 n! v
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      / a% G, n; l+ e9 |1 H" g
  6.     </customHeaders>   
    : w4 ?$ |8 i" m" n/ K# n! ~. p
  7.   </httpProtocol>  
    4 r# ?* g6 {. V% Z# T
  8.   ...
    - A" O& d& H) f2 X+ i
  9. </system.webServer>
复制代码

" O- b4 @. g* Y9 k* }  j之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。+ e9 M0 d* g6 C! I2 L! T3 N

, u* j' N# I- r9 e3、推荐解决方法。
9 {$ \! v/ ^' m2 T6 |& _2 }
  1. <script language="javascript">  : Z& n$ O8 F2 `$ {9 \- _4 u
  2. if(top != self){
    3 ~! F* Y/ @. t/ h
  3.     location.href = "http://xp6.org/iframe.html";  
    . ]3 e7 u: Z" k% M
  4.     top.location.href=self.location.href;
    ! S; J/ V0 s; ]! w0 b* b: i0 g
  5. }  
    : C5 C# R: a& y  c: M
  6. </script>
复制代码
* b& S3 J7 ]5 v) m
将上面的代码复制到需要屏蔽页面<head>里面加载。. }/ T/ }7 K7 M# a
制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。
( p- L8 p, ^9 {原理:
; k/ g. j6 @1 d1 |  O7 Y/ P! z第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。
6 o4 C' T, A0 x1 Q4 D2 S1 O, r第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。
) f+ L* n* e1 N& G6 K7 ]目前测试这种方法没什么问题。0 m2 g3 @6 i  `) |$ B+ {
& Y0 G: u1 B$ [4 [5 K* ^
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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