搜索
查看: 14568|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。
; M6 ?7 i  u% Y9 t3 M" J3 z这次讲一下如何防止自己的网页被别人iframe。
4 s( D! R4 ^' R/ d$ j& M/ T  B2 i3 G- G; J% i6 n* a* b0 B
1、这些方法都可行,但不是太可靠。- S+ {: G) \1 b% `. Z7 S4 O
  1. <script language="javascript">2 ^: D6 c  Q9 ~7 Q# e
  2. if( top.location != self.location) top.location.href=self.location.href;; ~( P  {# V6 E, X( r, u- `
  3. </script>
复制代码
# s! R. ]  c5 R
  1. <script language="javascript">
    / I0 Y) i  |2 L% D9 R% g! L! Z
  2. if (top.location != location) top.location.href = location.href;
    7 p$ J7 N& W: I- D8 a2 `7 A* d
  3. </script>
复制代码

, ^1 t+ E( P  U- q& S' N
  1. <script language="javascript">4 {1 o$ h# A' u' v# Q5 V2 w: q
  2. if (top.location != self.location) {top.location=self.location;}+ ~. x8 v6 C  Z9 J+ a
  3. </script>
复制代码

- G5 @" Z0 b, [, ~, T( |
  1. <script language="javascript">
    & I9 n6 F" r- U$ K
  2. if (top.frames.length!=0) top.location=self.document.location;
    / E, ?7 T$ l6 b
  3. </script>
复制代码
不可靠的原因:
# D- q1 x$ x) y0 V当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。
7 P* l  j$ z; c7 h: o: c& q
  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>9 P/ p; `- O/ N& ?0 |1 w; g' `
  2. <script language="javascript"> 0 w" I3 _4 H9 C  k, f* I% M: L
  3. var location="";2 Y$ S6 }, D7 Z9 I. W. A( H
  4. var navigate="";+ w; m0 ]4 f3 [. Y0 r6 Q0 [0 O4 b
  5. frames[0].location.href="";% Y0 v$ d( e( {
  6. </script>
复制代码
# o' \! B- Z0 M4 m  ~! D! D3 x
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码

5 O; u# b/ g; x6 y" W# O, n
& t( W! Y5 i7 [+ E/ J" _" Q# o
  1. <script type="text/javascript" charset="utf-8">
    ; A* R: @. I/ w! Q- I; m. S: |
  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>');8 ]$ _: }8 c, E: K
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。5 a- C( N# \- t8 b
Meta标签方法6 K% o- h3 s, l
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法
7 k" s# ]- C. t; H, {: }
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法3 v7 O8 `2 R7 Z/ A7 U
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法
/ \9 D3 g3 Z! F; a# l4 |
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码

. b0 v0 u5 y! D.htaccess方法
0 S% x& D; w0 }7 V& S在网站根目录下的.htaccess文件中中加一句: \' p9 ?/ k- w" x$ r4 u
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码
+ L7 }1 q% K! o3 c$ j( v
IIS方法4 v+ v% K7 G5 ~' Y& p
在web.config文件中加
  1. <system.webServer>9 f& `+ L2 `# X1 U
  2.   ...
    9 v" u$ }  ~+ S# K0 N2 o( N
  3.   <httpProtocol>8 r  A! l8 l8 }0 R
  4.     <customHeaders>6 R/ K7 K+ R/ Q' Y
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      
    - k/ R- W9 B$ @; o" u& P5 |0 o+ S% y
  6.     </customHeaders>   
    8 c5 N: G% Z) t. ]6 |8 C
  7.   </httpProtocol>  ( R  v. z/ r9 {/ \- O
  8.   ...$ d9 Q1 N$ g5 D# h8 A; A% m/ ?" W' X5 P8 d
  9. </system.webServer>
复制代码
- t1 h6 z) C+ B6 z7 P4 U+ {
之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。' s$ W% r/ J- S3 V
) f  ?  B0 C) V% U
3、推荐解决方法。; n9 R# h4 I& D3 M% ~
  1. <script language="javascript">  
    , u2 z* ~8 @8 ~! {6 ]
  2. if(top != self){5 F) G3 E8 P5 N/ r0 G8 A  K9 b9 U
  3.     location.href = "http://xp6.org/iframe.html";  
    ( P# \0 N; V: e2 c) G
  4.     top.location.href=self.location.href;
    2 F5 k* p4 b& ^- k* K
  5. }  " D6 t1 T* q( ~. s  T3 U
  6. </script>
复制代码
) \- U( p6 q! E, Q2 t+ p; H3 h: ?
将上面的代码复制到需要屏蔽页面<head>里面加载。
+ |6 G* r" j" m# {制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。" X# b: n# ]! ?( T6 J( c' H
原理:4 g. b8 |5 ?- k
第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。! s1 R6 Z; `0 k
第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。
4 {6 G6 Z7 T! u目前测试这种方法没什么问题。( W$ J. P, H8 ^! U" X

# U6 W5 C7 r- Q; U
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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