搜索
查看: 14437|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。
3 U: H9 @- d2 ]" m3 Y2 c9 d$ ^1 g9 p这次讲一下如何防止自己的网页被别人iframe。
" @5 {; d9 E4 }% d7 r: w* G9 z6 g4 M; c" V
1、这些方法都可行,但不是太可靠。1 Z4 g8 U. K* w5 t: i
  1. <script language="javascript">
    ; r2 I6 A1 L3 f; u$ X. Y
  2. if( top.location != self.location) top.location.href=self.location.href;
    ( S& w' [. z- l3 M7 J
  3. </script>
复制代码

: z! K* {8 E9 ~3 S" v3 a, V% x: R1 L
  1. <script language="javascript">' |9 N& ^$ `* O4 p& n
  2. if (top.location != location) top.location.href = location.href;
    # ?" t2 i* i+ v: l: S5 O
  3. </script>
复制代码
* A" k( l4 ~2 n7 w, j1 j9 H7 o" `
  1. <script language="javascript">
    . s$ a2 K2 S  ~3 n# W
  2. if (top.location != self.location) {top.location=self.location;}) a; ?' w5 M2 Y4 H. U
  3. </script>
复制代码
9 [- S6 B1 R- Q, V9 Z; A/ ^: B
  1. <script language="javascript">
    ) P. k3 a/ e2 d6 P1 K
  2. if (top.frames.length!=0) top.location=self.document.location;: @; x. {4 H7 k/ b
  3. </script>
复制代码
不可靠的原因:; v9 \5 G8 L+ U, |5 V
当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。. [3 D: Y3 U5 b' N8 ]% t0 a
  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>
    5 y2 W8 {2 C% G, x9 e
  2. <script language="javascript">
    ( M. D# K3 T1 M: O% S
  3. var location="";
    0 |% V! S/ F/ [
  4. var navigate="";
    * f% Y7 {) j4 @' @1 W
  5. frames[0].location.href="";3 ]9 s  r  g4 f! R+ j% ~+ G+ e
  6. </script>
复制代码
, e& }+ y3 w& c7 t6 I+ d5 ]1 P& _
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码

; \# L( V8 @+ [/ W! w! H3 u& G( e+ T. r2 h3 ~* A& v+ w
  1. <script type="text/javascript" charset="utf-8">
    ; Z# o- G9 M8 w
  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>');/ A  `. z& a8 w4 O- G
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。" E% n# V$ P% f% M
Meta标签方法
1 k/ M0 U- [/ p$ ?7 ?$ K1 a- d4 Z6 R
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法6 B0 M# W/ D+ H' D! A7 k. h
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法
4 d6 f) S& r8 j3 n4 z: _* h
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法
* z% _6 A% M( `: Y, E) W1 W
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码

1 J2 q. _; C8 I7 Z( [, M.htaccess方法3 K6 Q8 r+ Z' M5 G
在网站根目录下的.htaccess文件中中加一句! ^5 `; q6 R# p: J
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码

/ T8 Y5 r8 a" E$ G& _; |( b) A1 PIIS方法
, @* d+ Y" `* |! D' C0 E+ ~在web.config文件中加
  1. <system.webServer>
    " Y9 [- r+ |+ [* b( ~& s6 G& s: z
  2.   ...* L6 m3 y. t- z8 G' Q5 G0 J1 V7 i
  3.   <httpProtocol>
    - w& R' O; r7 A' d- `
  4.     <customHeaders>' p1 W! k9 T" z" h
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      
    + j  ]' G& g- I7 ]7 S, M- I
  6.     </customHeaders>   
    , W# @1 z# k5 `5 T' V8 Z
  7.   </httpProtocol>  
    + v) N/ @& B1 Z6 U6 y
  8.   ...$ o9 h" u$ U* Y
  9. </system.webServer>
复制代码

" U5 T1 B+ B. P9 j. S4 p9 T3 s% Y之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。7 Z6 B9 F  R5 e# q6 c6 P) S
/ ~; c5 D8 V+ x1 [' ?; W, Y6 {
3、推荐解决方法。
9 B, {2 Y6 I& X: C* j1 ?8 @
  1. <script language="javascript">  / p( S! p3 a8 Q2 @& L0 _% P
  2. if(top != self){
    0 C# n, Z4 I% T  u0 I
  3.     location.href = "http://xp6.org/iframe.html";  * M+ {7 j3 f' \, l6 o4 M$ ?
  4.     top.location.href=self.location.href;: z4 h" s; j- y! ]  q7 @
  5. }  ; @' w: q6 x4 q, J
  6. </script>
复制代码
7 _7 Z2 b6 O) x2 C2 N" f
将上面的代码复制到需要屏蔽页面<head>里面加载。
( q# F' H* j5 B+ G0 u制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。  P0 q9 v7 `# N9 r& a0 J* O
原理:
+ e/ P  B" u, F) x- e" w第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。8 O: P0 E0 @& Q% o
第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。: a4 q' u- o( w' ~
目前测试这种方法没什么问题。
5 r0 z# ]/ L- P6 M0 `" |) P% [
; V2 Z' a. z# e7 [' e6 H& D  b
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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