搜索
查看: 14458|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。8 H  N! q+ ]( a) _+ P
这次讲一下如何防止自己的网页被别人iframe。
. F) l5 V+ h9 N/ U. Q1 w7 A
2 l% M+ F; G9 ^3 W7 \. m! ^5 j1、这些方法都可行,但不是太可靠。* b3 _1 s3 \1 O' V$ H" E
  1. <script language="javascript">$ X' v2 V/ H  k( K9 Z; v/ S
  2. if( top.location != self.location) top.location.href=self.location.href;& i, B2 N1 \: c9 m
  3. </script>
复制代码

& s! [8 J" A  P7 u9 |9 B
  1. <script language="javascript">' O7 ~7 O/ o6 T
  2. if (top.location != location) top.location.href = location.href;
    8 [# H: d4 |( G0 Z" u# ~, S
  3. </script>
复制代码

& i+ G% S* S- `) U. ]
  1. <script language="javascript">6 j8 `" L7 ]1 ~) m# L) T
  2. if (top.location != self.location) {top.location=self.location;}
    % M. j% F1 j/ m" l$ l
  3. </script>
复制代码

5 W5 P$ H7 L! c$ L5 r9 B9 G' u
  1. <script language="javascript">
    8 A4 m+ D0 w; g6 V( K
  2. if (top.frames.length!=0) top.location=self.document.location;
    2 M" w6 z$ K& B
  3. </script>
复制代码
不可靠的原因:* x# k+ a3 s7 N* S' n- R& p
当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。
- A+ {, V) {+ c( F
  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>* n/ j7 E; U1 d; M
  2. <script language="javascript"> 3 e+ g0 n) n# W: v& B
  3. var location="";1 B# \+ c$ `2 f! _0 r- S
  4. var navigate="";
    ( M$ W0 Q% a& f5 W/ W
  5. frames[0].location.href="";( r1 }. O1 J/ W8 l+ I' i
  6. </script>
复制代码

# M. l& }- I* w: ^0 L6 }
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码
3 q  p0 D, j3 l3 t& ]/ r
* D- m; O5 R' M, f
  1. <script type="text/javascript" charset="utf-8">
      l% y; [/ V2 k- W( T! x3 N0 H
  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>');
    1 b9 t* t% B: l+ d; S9 m3 k
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。' _% @- K$ K1 X0 _& }
Meta标签方法
9 l2 U4 B* z. z' h/ G9 i5 h- d, n
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法" F2 n: w" p% J! }: m8 a
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法/ g/ B/ W" ]0 a" G: R
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法8 ^# h0 @$ b6 h' R
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码
+ [5 h1 W7 m; S- U1 n3 d
.htaccess方法
% O8 `! @' z( c+ S在网站根目录下的.htaccess文件中中加一句$ f8 F1 ]6 K1 `) F5 `/ e, M: G
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码

' W0 w$ G; R! E/ L  |IIS方法
- n( s5 ]; _# J/ I5 f在web.config文件中加
  1. <system.webServer>
    ! e' f, v9 l+ w9 X: K; Y1 X* }; \
  2.   ...- ^( }! E/ P/ B9 C: j) V; f; D
  3.   <httpProtocol>
    ' [% N5 ^" j$ f- Y( k/ t5 S! [
  4.     <customHeaders>
    . F% y1 k+ \& g4 v) W3 h
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      
    ! e! V$ ]+ _4 T+ e8 B" n: H
  6.     </customHeaders>    % C: ^0 c- W  {! {8 t
  7.   </httpProtocol>  
    9 ]) f( \# i8 J5 [. |, j
  8.   ...
    9 F! d* C: n5 Z! s; @, X
  9. </system.webServer>
复制代码

' x$ H" l; a# @+ `之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。" K! B8 O6 v) |: u+ z( J/ o

# N& i1 c8 R7 X; Z, @+ b/ r3、推荐解决方法。
2 h6 q4 Q$ d: e7 J; Y; L
  1. <script language="javascript">  . J- V9 I# r( j- L! k% r9 z
  2. if(top != self){
    2 q. y) B: J; t  e- [% a* B
  3.     location.href = "http://xp6.org/iframe.html";  
    " D8 P& e% c- Q8 k
  4.     top.location.href=self.location.href;
    ' [/ b' y4 i/ T* T" ]
  5. }  
    / B' N* h9 d( w+ V4 {8 Y& p
  6. </script>
复制代码

% b: ?3 R2 F) Q0 g4 w) s- X' J将上面的代码复制到需要屏蔽页面<head>里面加载。+ ], P/ R0 D( G; o8 r
制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。# \# Q$ q, z- k3 `3 J# B5 [
原理:+ J. ?# k8 E, B& g, c; ~6 {+ {
第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。. D. G, V& L8 O8 C0 [
第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。
: b. c. D" ]0 L! U0 X( J目前测试这种方法没什么问题。1 X$ h4 x* l! I9 p% z) |0 ]9 v( w
1 u2 q2 A: j4 C6 Z3 u
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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