搜索
查看: 14383|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。
1 j# B* M/ g4 O2 j( m/ o  I这次讲一下如何防止自己的网页被别人iframe。
+ @! F7 F( K, |  l7 q) Z" }
/ j% w; \" ]1 o3 _2 i% i" I1、这些方法都可行,但不是太可靠。
6 n$ p) V; w9 D- ?% g. u2 E5 T2 z
  1. <script language="javascript">
    7 h5 H% |% p$ i3 `6 R2 z. A
  2. if( top.location != self.location) top.location.href=self.location.href;' h, U8 d/ M* q( C+ t
  3. </script>
复制代码
1 i5 Y" N$ Z: D$ N( S, O# F, t
  1. <script language="javascript">4 y, l- k, r! }5 v; x
  2. if (top.location != location) top.location.href = location.href;
    2 l5 f/ r2 g4 O" _- B( k3 b% |
  3. </script>
复制代码
5 W$ O/ d  B3 [$ V! @4 k8 G8 H# ]# s
  1. <script language="javascript">
    2 K6 q, B& D1 n+ t7 w5 E6 P$ q
  2. if (top.location != self.location) {top.location=self.location;}5 g% w0 f+ z' n0 ?" E# X  T  {1 A
  3. </script>
复制代码
. }3 V2 P: a; ]
  1. <script language="javascript">8 [4 s; A$ B2 w- A7 g* z
  2. if (top.frames.length!=0) top.location=self.document.location;
    ( f4 k; j5 h6 Y* e8 {
  3. </script>
复制代码
不可靠的原因:
% }) r+ H, _: {, L) ^, Z+ R当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。; p+ S  g& c9 K3 X" F! B( e6 ?) M
  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>+ H) @6 [) H, G
  2. <script language="javascript">
      d- K. ^/ D7 {& q- Y/ [4 r
  3. var location="";
    8 k8 w& B6 B: K9 P
  4. var navigate="";
    * s+ H9 {6 M0 y5 I1 H: T
  5. frames[0].location.href="";* R- L' Y4 N/ }$ I6 I$ k
  6. </script>
复制代码
, A  C. Y/ Y$ X0 u
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码

1 u; ~' H5 r: y% I
. O2 D- H, I! _+ r
  1. <script type="text/javascript" charset="utf-8">& ?% T  s' j9 W2 E1 C
  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>');
    ' Z5 ~& i6 e" ^$ v" N: A
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。
1 y4 S+ p7 B. r) E' {" dMeta标签方法
' _3 s& f* ^4 i6 ?: K5 U0 f
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法# k& I$ z! x# A
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法& j9 |. _9 ?3 D8 N  V/ J
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法# f0 O# B1 Q0 ]0 j2 C5 ?7 A7 J
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码

. A( i8 _: p. t( `3 W) |.htaccess方法5 C: l2 E1 |; ]* Y" q
在网站根目录下的.htaccess文件中中加一句
/ q" \6 d8 d0 r* B: I  O. j2 s
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码

3 y( C, Z% R3 L/ M6 ^- Q) nIIS方法* Y/ t8 Y8 Y& c2 y
在web.config文件中加
  1. <system.webServer>; h! \  ]% B1 L
  2.   ...0 O" o* b4 z) Z/ {, h4 _. R9 Z
  3.   <httpProtocol>
    1 Q' e0 A$ C. S2 s4 u
  4.     <customHeaders>7 k0 {, p- X% ^0 {0 M5 l3 w
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      
    2 ]$ z/ N; y" x
  6.     </customHeaders>   
    ( l6 I; I" R6 I4 U, Q1 O8 n
  7.   </httpProtocol>  
    8 R3 |. _2 C1 U
  8.   ...1 ^# s8 n4 a* G1 F8 U' t
  9. </system.webServer>
复制代码
6 y0 N) e! n+ _4 j/ s
之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。
- ^4 e- t9 a2 _: j3 e
7 f" a! G8 t* v3、推荐解决方法。
% B7 a6 K; R: K1 |/ D9 }) e' C
  1. <script language="javascript">  " d1 j/ y) A% f# H& F0 [
  2. if(top != self){
    4 R, W( |) T6 I! z. P9 d7 E
  3.     location.href = "http://xp6.org/iframe.html";  9 n" q- W( q4 X0 `5 t) k: n
  4.     top.location.href=self.location.href;; x7 |7 o7 r* D! U  |$ H5 M
  5. }  
    ' H% r$ k6 g6 v* X
  6. </script>
复制代码

6 {/ I" B2 I" a" l将上面的代码复制到需要屏蔽页面<head>里面加载。
, M/ y" x0 b! X制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。: _7 b+ J! P+ s- L5 @& l. a- [
原理:
9 A3 E7 A( g  e8 `$ ?# t% X1 I6 e. s第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。
" D  ~6 c1 _7 P, S* i/ u1 z; a第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。
3 G1 P" R, o  t; }3 ?! U& N: H目前测试这种方法没什么问题。
* R8 ^" c$ n: U4 R* k) B1 g" ?+ Z6 ?/ z# t# j) Z  C0 I5 C$ q
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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