搜索
查看: 14280|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。% ~8 B0 c$ ?$ {0 z# Y
这次讲一下如何防止自己的网页被别人iframe。
7 b9 J! R( G7 [$ }& P$ @+ Q0 h+ o) p+ v; O" B" f2 R
1、这些方法都可行,但不是太可靠。, U; b( c! p' |6 G
  1. <script language="javascript">, Z( Z4 Q+ s9 `0 m2 P; j
  2. if( top.location != self.location) top.location.href=self.location.href;3 Y1 A, Y: J) X: |6 V, y
  3. </script>
复制代码

7 H, T* }8 U( f1 J
  1. <script language="javascript">
    $ J/ p8 ~( p# q& U
  2. if (top.location != location) top.location.href = location.href;
    ; v( J8 y) c, T6 h
  3. </script>
复制代码
1 {) p& h$ z! R$ [1 V- T, @
  1. <script language="javascript">' E1 p/ i" n! K2 J& q7 M2 C. c- ?
  2. if (top.location != self.location) {top.location=self.location;}! X$ i. B' I+ b/ P
  3. </script>
复制代码

# Q5 b! W0 [" m+ U, m5 M2 Q
  1. <script language="javascript">
    3 ~6 K) c% f6 V5 S
  2. if (top.frames.length!=0) top.location=self.document.location;, e1 R* U% B& V- T
  3. </script>
复制代码
不可靠的原因:% }. l% K: U$ ]/ H7 V7 j( h
当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。
7 x, t: p! i  V/ {! z" C
  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>" j2 }  I( C8 \/ H- f- E
  2. <script language="javascript"> 0 h  o$ g' p; w& @! `( W
  3. var location="";
    + f. x2 _* z8 @: O& T( d; z
  4. var navigate="";% Q# Z' h' D3 X! P+ _5 a
  5. frames[0].location.href="";
    ) U  C: w4 D. I/ M' L
  6. </script>
复制代码
- J5 n0 o. s4 n- o
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码

+ l2 k0 Z& `- R! e) z! Z: c; h+ l/ C) P' K
  1. <script type="text/javascript" charset="utf-8">
    9 @& t/ ]4 x* C4 P* ~
  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>');
    ; @) F' c8 R% |, L
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。* g1 p/ J5 h) L$ D4 X& _' }+ M
Meta标签方法7 R8 ]3 N0 O6 \% r% S+ ~& O. f
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法
3 Y0 @+ L8 g, G& Z
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法
! I6 `) H) K# m
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法
4 ]/ T$ H9 l' u5 }- K. G% r8 V9 N
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码
) P1 G- W7 R( K( n0 F( \2 z, Q; r
.htaccess方法
: R6 X& ]2 A& C在网站根目录下的.htaccess文件中中加一句8 |$ L& a* W9 J8 R- U/ E9 M
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码

: m. a# r) c$ g0 u7 C& nIIS方法9 Y; H9 T; v, v( X; m5 y
在web.config文件中加
  1. <system.webServer>
    2 x: k% k+ ]6 W6 @
  2.   ...
    0 G0 b! R7 W6 _. R; r) D
  3.   <httpProtocol>3 G/ d( @" W+ ?, A& b$ r
  4.     <customHeaders>
    $ H( b2 _' |. l+ m. ]
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      
    4 G+ [+ d5 \6 O7 V5 i. p4 m
  6.     </customHeaders>   
    ! u4 n1 l: {3 W# }
  7.   </httpProtocol>  5 v0 Q/ z8 ~4 u( `
  8.   ...+ k( S: A9 w" O3 Y! b
  9. </system.webServer>
复制代码

7 G. |2 Z4 h5 g! o6 Y之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。5 n7 C3 M" _  \$ P2 H9 `% h& A8 t# j
/ Q- P$ Z$ N" _2 k0 h; a
3、推荐解决方法。7 }( f" R- X4 {( s
  1. <script language="javascript">  # {2 o5 l) ]/ C4 M' B' A! o. o
  2. if(top != self){9 g' Q) e# I4 c1 m$ _- U: ?
  3.     location.href = "http://xp6.org/iframe.html";  : J8 R$ m& c9 q1 J. t9 }/ ?
  4.     top.location.href=self.location.href;( K  N, W# R6 ~. G9 p, T8 j  r
  5. }  : I' g( W6 y* R
  6. </script>
复制代码
  `- X& n  ~) V# j' A- p
将上面的代码复制到需要屏蔽页面<head>里面加载。& @( @- L3 O5 U' Q, K8 `; M
制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。
3 D# f5 h! q" `" K原理:
* H2 Z" H+ [0 S第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。
+ l' [' I; \6 L# J第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。
0 B( C0 h, G( e/ N目前测试这种方法没什么问题。  Z( ?5 ]$ o1 E
0 d- f* C( w% ?, W
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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