搜索
查看: 14411|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。
) N' Z& k% ?% _. H7 g这次讲一下如何防止自己的网页被别人iframe。$ E+ N/ o2 @7 I( a5 j( F. j% I

; R: l% O8 D* e! }/ y" i* D# e1、这些方法都可行,但不是太可靠。
$ x5 e* c/ m9 f% h% s
  1. <script language="javascript">
    $ O) l; O: U5 r2 i" U: w
  2. if( top.location != self.location) top.location.href=self.location.href;* L* M: ]- C! B+ I
  3. </script>
复制代码

. e* U3 }) Q; C& {' i3 K7 Q3 N) s
  1. <script language="javascript">6 b, A4 q& w, V: x5 Y: h
  2. if (top.location != location) top.location.href = location.href;
    + X) s2 \# k9 c' z; y2 G
  3. </script>
复制代码

, [& f4 w" r6 _3 e9 r
  1. <script language="javascript">
    ( U/ q. @% T$ T: f
  2. if (top.location != self.location) {top.location=self.location;}: r( a: R& h# _, [
  3. </script>
复制代码

) r5 F1 y3 R7 [* c% b& A
  1. <script language="javascript">; P, H+ r6 ^. r$ i! Q' q
  2. if (top.frames.length!=0) top.location=self.document.location;
    1 F4 N) d5 ?( d+ w
  3. </script>
复制代码
不可靠的原因:
( G, ]. ]8 P/ U' `当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。
+ P# a3 S2 s7 D5 L# |
  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>
    ; @3 Y8 o1 s$ W" Y; t3 o. H- W
  2. <script language="javascript">
    / p. r) ]0 V& C7 T1 c
  3. var location="";' I* i: {8 N. p: G5 v& J7 t
  4. var navigate="";3 {& b3 b5 k2 v
  5. frames[0].location.href="";
    3 z7 \; g  q. h% ~' y* i
  6. </script>
复制代码

( F! ^- c1 T6 i+ r6 t% ^! ]- D1 }
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码

& h, ]% s, V8 r& R% R# a
# ~" i5 T7 }4 C5 i. A" W
  1. <script type="text/javascript" charset="utf-8">
    ' p$ ~5 I5 V4 u' V$ m
  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>');$ U" H, |, {# g3 Q: q. `
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。
( F! J3 P) |6 J, kMeta标签方法
! b  N1 |- V* I# T" i; [5 r1 C
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法% C7 |- K5 p$ ~# I
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法
* s# U* V# r% n, I  |: j
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法$ P" I: E$ Z" x0 ^1 U
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码

. ?  O8 O  T7 i0 S% \) N, v+ X/ U2 [.htaccess方法- w+ f- P( l( ^% }
在网站根目录下的.htaccess文件中中加一句" ^) N' B0 s+ e
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码
' I/ Y, q  s5 s( r! c* ]' n
IIS方法
2 k8 U2 t8 d6 i; v3 \% Q在web.config文件中加
  1. <system.webServer>3 ?" p$ v- P& H$ J8 @
  2.   ...
    ) r( X6 P4 p. s' o( M
  3.   <httpProtocol>: i; P$ i3 o. E) ~
  4.     <customHeaders>
    : X$ F& W) {$ m. Q' ]
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      
    ; K0 ^# r# D0 p7 D& R2 n
  6.     </customHeaders>   
    ) K5 L% Q/ W0 h1 [5 U0 }
  7.   </httpProtocol>  
    " q9 u( B- i4 z3 m/ j  D" }' H
  8.   ...
    9 H$ o: U& G7 z0 g! [1 d/ A
  9. </system.webServer>
复制代码
, C7 X( _8 c; w& e
之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。
8 ?$ ^8 {$ z; C: q/ q% M$ P, r7 V
' B* W2 ~/ N3 U3、推荐解决方法。% O1 {! _$ N4 `. @! x
  1. <script language="javascript">  
    ) [% A" @$ R0 b: S. Y
  2. if(top != self){
    8 c; p0 A, u' h: W' [! ]
  3.     location.href = "http://xp6.org/iframe.html";  
    / u8 C1 B& y5 e- Y7 }9 R1 C$ H
  4.     top.location.href=self.location.href;6 p7 q! H6 M4 w3 g/ H! p+ Q: z
  5. }  
    " R6 F2 C& h9 h5 @, _" i4 z$ R
  6. </script>
复制代码

  W: P8 H' N: l将上面的代码复制到需要屏蔽页面<head>里面加载。
6 W  E8 B0 Q+ w( k制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。+ V( R9 ?3 s/ R6 q- `9 |4 t4 ]
原理:
$ i1 {- T) ^+ P第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。
1 I7 f; C7 I# H' z第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。2 _$ Y2 t( Y7 {
目前测试这种方法没什么问题。3 a& C2 X, t8 j% X

: D9 ]( B$ Q; X- U1 Z
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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