搜索
查看: 14385|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。
: v0 M/ k/ i9 r% Z1 f1 E, X9 c) s这次讲一下如何防止自己的网页被别人iframe。$ r: q" D: N$ ^. r! y

3 F- Q' V; f6 }  w1、这些方法都可行,但不是太可靠。; \" q: U+ `( p! S8 N
  1. <script language="javascript">
    5 o( M4 T/ _0 y: v) E$ f
  2. if( top.location != self.location) top.location.href=self.location.href;  b) r0 Q7 p, z* Y* W" A
  3. </script>
复制代码
" h8 U  v/ D1 ]
  1. <script language="javascript">) C- i$ u3 g, S
  2. if (top.location != location) top.location.href = location.href;
    ; {! L/ g9 v7 o8 I
  3. </script>
复制代码

3 j! {& j4 ^! W  J- }2 j
  1. <script language="javascript">5 |" r" w$ l. _. R( ]
  2. if (top.location != self.location) {top.location=self.location;}
    6 D/ b$ C; J4 n$ F) V
  3. </script>
复制代码

% e  M9 l( u) B* h' r$ r" a
  1. <script language="javascript">. e, f% b8 C' N8 ~* A
  2. if (top.frames.length!=0) top.location=self.document.location;
    - \1 U5 h! r* H7 d
  3. </script>
复制代码
不可靠的原因:
. x) |! s2 T3 J& \当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。
7 U% B1 p: l1 C) `9 _+ ~8 y
  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>) r# \; Q8 [7 \
  2. <script language="javascript"> ' e! M- s9 H& v3 n* W: s* T* O2 q% x
  3. var location="";
    1 h5 n( g8 {( t3 S6 ?
  4. var navigate="";- W+ W3 I+ [8 W; h
  5. frames[0].location.href="";! @( u7 ^' K, g1 h9 J! S
  6. </script>
复制代码

8 y8 u( J1 y2 f, [0 o% H: X, M, U
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码
/ d: C6 ]2 C: e1 k

( w* v* M6 g4 ^; ]% V
  1. <script type="text/javascript" charset="utf-8">
    6 e2 F: |$ J& p8 p  K2 T: }
  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 G  I" |6 u' _+ f$ H0 e
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。) _1 H" w6 {0 n5 f' ^
Meta标签方法* S2 k3 }" v/ X2 X8 f5 Y( \
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法
% @7 w6 O2 N9 W
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法+ Z3 `* M' ^3 ]+ b3 w
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法* ]# R9 f; F4 B' i
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码

$ f; y2 i- @9 S- `/ M  f; a.htaccess方法
7 b0 z/ M5 X  \* o+ d" \9 [在网站根目录下的.htaccess文件中中加一句
' K: g; m5 `" L
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码

# Q9 S  N0 s! o% f: Z1 H3 [+ ^! HIIS方法+ L. C1 `, P' }* B7 r9 X$ ~7 p
在web.config文件中加
  1. <system.webServer>& q0 T+ N1 E) |5 L9 n" C3 J: }, Q
  2.   ...! ]+ y9 |$ J9 K. z6 p. ?
  3.   <httpProtocol>
    / ?. ^; m" G( j4 i+ b& Z
  4.     <customHeaders>
    1 W- \' L, d3 [1 _
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      
    9 d% l2 M6 b& y7 L0 N
  6.     </customHeaders>    8 L7 r9 h5 ?4 u+ O- o7 H$ i
  7.   </httpProtocol>  " n3 M2 ?8 K! W: n0 a
  8.   ...
    : j& ^5 t. f) W* M8 Z4 J
  9. </system.webServer>
复制代码

% U2 k- e: @# y+ f, S7 L之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。9 |2 p9 w8 e1 G9 _$ T4 o
# s, m. }1 D' h  ~
3、推荐解决方法。" y- q: }1 T3 F+ [
  1. <script language="javascript">  
    4 U% c! e2 I2 r: w" `2 b) P0 E, M
  2. if(top != self){6 O/ o( e# ^; N; P6 C) Y0 z
  3.     location.href = "http://xp6.org/iframe.html";  " W& ~) j- a9 B5 D$ o) P8 `. G9 r
  4.     top.location.href=self.location.href;
    ! A/ k2 M3 [- R0 G% ?
  5. }  : r) s" Z4 K; ?
  6. </script>
复制代码
, w) U$ B# M+ f  }; K) B
将上面的代码复制到需要屏蔽页面<head>里面加载。
5 {* u( ^5 q+ W% Z+ m' R, k制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。$ \7 M% D* Y! T! m- ]3 \4 ]! W. i
原理:
/ Y3 y9 e' n& y$ u8 C$ g第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。
* t/ w0 ?7 X* L第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。3 u. I6 e+ R- P- b5 @' U, m
目前测试这种方法没什么问题。  q7 n6 h5 D. T8 L% ]9 h* E

$ S# Q$ n" d' k# C0 y
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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