搜索
查看: 14436|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。- H/ Q3 B+ a( w- }1 q2 ]* G
这次讲一下如何防止自己的网页被别人iframe。
0 o/ |' ], N7 m4 M2 A# W' ?$ b5 q+ O* {" }; b8 K
1、这些方法都可行,但不是太可靠。
) a0 S: v0 H3 d/ \/ J; y# g+ }
  1. <script language="javascript">) r8 b) u# w! E' N! i! \
  2. if( top.location != self.location) top.location.href=self.location.href;
    . I5 j2 L4 Z, q0 K6 H' t) M
  3. </script>
复制代码

+ h) `. g1 v0 r
  1. <script language="javascript">0 f( L8 ?- B  B. ~) F# |
  2. if (top.location != location) top.location.href = location.href;
    " j/ O, G" R# Y3 L5 Y
  3. </script>
复制代码

! E9 g) m9 N( l
  1. <script language="javascript">
    ' @4 l& V, k* G  @$ C
  2. if (top.location != self.location) {top.location=self.location;}
    ; F, d  r' |$ @! G' p
  3. </script>
复制代码
# k6 Q. I: k* f7 u0 l
  1. <script language="javascript">3 N" H1 _. j- L, @" p  L
  2. if (top.frames.length!=0) top.location=self.document.location;
    , [3 t+ \/ u9 W5 E
  3. </script>
复制代码
不可靠的原因:, X) D* }- U1 _5 M( P+ U
当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。" f; U7 x0 G: N3 g% R3 N
  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>
    & g: @- P3 O0 R
  2. <script language="javascript">
    6 y5 K1 `5 C  {! @
  3. var location="";
    2 q& p& R! B/ t5 a( o0 l
  4. var navigate="";, }8 [" P& q: O
  5. frames[0].location.href="";
    9 b8 p" I' v; R' |0 z/ x" J
  6. </script>
复制代码
8 v7 `5 [. n+ q: _! I
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码

8 o. J+ ?4 ^3 W! N3 ^- d$ q& J" E5 F3 g, I
  1. <script type="text/javascript" charset="utf-8">) a6 E$ v% ^2 Y* Z" r* w. j
  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>');8 {. `0 ]( [6 P
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。
& f" M4 y" j# b7 j2 ^Meta标签方法; T" L6 H) o3 @4 z. }* y
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法3 y: i( \3 S+ m
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法
4 n6 t, @* ?: M! A
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法
4 e! L  @) o4 A3 R8 i& O
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码
0 F0 S" H9 n  D
.htaccess方法
% |' A  H0 y7 l* @2 W4 d在网站根目录下的.htaccess文件中中加一句& f& W1 l8 P" w4 S8 q4 r
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码

8 q- \% i5 v4 U) q. j3 bIIS方法7 ~$ r/ W' R+ T0 e5 {; c
在web.config文件中加
  1. <system.webServer>3 x  p& z' F2 R
  2.   ...
    9 w* q" q! V( [) w) L) X
  3.   <httpProtocol>
    , g  T* j; j( Y; F  V: Q$ X% Q
  4.     <customHeaders>! U' r1 [2 b; Q; f
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      3 l0 p4 j! g+ K9 K
  6.     </customHeaders>    ; t" u+ g# a$ p+ r2 R) U
  7.   </httpProtocol>  6 K' a6 D$ R( \6 p* t
  8.   ...* D' K) F: M0 C+ E& x" F
  9. </system.webServer>
复制代码
" M: y, }$ D' d" G5 X# Z9 A
之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。
! q: j$ T# v4 \4 o- R$ }' ~& c; E$ `4 E7 @: @3 u
3、推荐解决方法。' O) f- M2 Y; s% v) X' d
  1. <script language="javascript">  / m4 O# s; q! h8 h" R
  2. if(top != self){3 S# h1 G% {4 x- x6 e+ g6 s
  3.     location.href = "http://xp6.org/iframe.html";  % c/ G$ |/ f% C" |( r: k( {
  4.     top.location.href=self.location.href;9 ]9 d3 Z2 s* g1 f, y, O- t$ X6 c
  5. }  : }- o! W& G) K
  6. </script>
复制代码

* T# X, N7 F. K8 {! w$ z& B: q9 R将上面的代码复制到需要屏蔽页面<head>里面加载。
2 f% B4 n$ ?+ M制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。
+ B! G! s; l& {  K原理:
$ \' I5 X' M' [* W第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。7 d; j% k5 k" i, u# y- w
第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。4 s. W( f" A* o5 P$ f+ `
目前测试这种方法没什么问题。$ I+ m. w$ p; A# Y
2 E; i8 `; e2 y; e. B9 @
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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