搜索
查看: 14521|回复: 0

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

[复制链接]
发表于 2020-11-16 17:30:36 | 显示全部楼层 |阅读模式
前面说了如何阻止 iframe里引用的网页自动跳转,已达到iframe页面的目的。
* v$ J8 J; n6 {- U这次讲一下如何防止自己的网页被别人iframe。7 a. z+ P$ n5 w3 Q0 A1 |6 Q
& Q, x# L5 R) `$ b+ h. p
1、这些方法都可行,但不是太可靠。0 X) s) O2 }7 e
  1. <script language="javascript">
    ( E1 B! v7 g" F8 O" G" I
  2. if( top.location != self.location) top.location.href=self.location.href;
    2 c$ ^8 R5 Y! _- C; B1 G
  3. </script>
复制代码
7 V' k! R, i. R, l8 r: R. o
  1. <script language="javascript">
    ' f9 ~0 R3 Q$ x# q
  2. if (top.location != location) top.location.href = location.href;
    6 s( \/ i; Y4 a" ]7 p# @  N% y
  3. </script>
复制代码

& a) \& f8 {/ Q2 A- |6 G) N9 p
  1. <script language="javascript">5 b. _" E1 T6 t! q% _0 Z8 E! h& J
  2. if (top.location != self.location) {top.location=self.location;}
    $ o4 @% ~. T) B8 Y
  3. </script>
复制代码

2 X, A( i9 o1 F$ p+ x' T" c
  1. <script language="javascript">
    7 O; ?/ C. q4 I4 R/ @
  2. if (top.frames.length!=0) top.location=self.document.location;7 ^) {2 ~0 W. B8 p" |( x
  3. </script>
复制代码
不可靠的原因:
+ j9 I! ?: m; k8 O3 m+ S当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。" C# j6 h" n, d# Z* E
  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>8 _& i; Y9 D1 d$ f; H
  2. <script language="javascript">
    ' A/ W0 \3 E* A$ q4 G+ X( _' c# o
  3. var location="";
    % r; W. R" l0 }" P3 R
  4. var navigate="";: Q' x9 @3 S& _2 e/ S' i0 T5 p
  5. frames[0].location.href="";
    ! }8 Q- u7 @/ T; J
  6. </script>
复制代码
* Y) L7 S; K2 g; u6 c  R
  1. <iframe src="http://xp6.org/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码

4 s. f8 o4 j! `( z2 k; Z& ^7 [; p) b7 k. ?0 I
  1. <script type="text/javascript" charset="utf-8">
    ) Q3 {0 r% |% W1 @! y
  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>');
    # G1 [# r; O# p% M( B  S
  3. </script>
复制代码
2、代码层次的屏蔽,方法可行,但不是很人性化。  o- Z9 t/ n( j% f: h
Meta标签方法: c" R( k7 P0 `" S8 S% ^, I3 d
  1. <meta http-equiv="X-FRAME-OPTIONS" content="DENY">
复制代码
PHP方法
; M  e3 r0 T$ a5 Z/ \5 {
  1. <?php header('X-Frame-Options:Deny'); ?>
复制代码
Apache主机方法
5 k3 e3 A7 w: G7 ~7 H+ F* i
  1. Header always append X-Frame-Options SAMEORIGIN
复制代码
Nginx主机方法7 `5 k+ T. o6 `5 x
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码

" e! T6 Z8 g( D! f" E4 \.htaccess方法
6 ~9 K- G" u+ [4 p6 H* c在网站根目录下的.htaccess文件中中加一句
9 L0 `( @  O  z1 M) h
  1. Header append X-FRAME-OPTIONS "SAMEORIGIN"
复制代码
: |8 B. {& s# X0 ~, @; I: o
IIS方法8 F/ d8 z  [' f: y
在web.config文件中加
  1. <system.webServer>
    , q$ {$ X: L5 b4 t! s8 C5 W
  2.   ...
    " ?/ [$ N9 `% ]4 [
  3.   <httpProtocol>
    / a! j) X4 ]( ^) F+ D& n
  4.     <customHeaders>1 \' n( x# o& j8 c/ c7 d
  5.       <add name="X-Frame-Options" value="SAMEORIGIN" />      
    / t! @( Q, J! @; f" T/ S1 E& U
  6.     </customHeaders>    & |' V/ N0 Q4 J* n1 Q: u" T7 i, s* ^, q( ^
  7.   </httpProtocol>  ; V- C3 d% v% d' H7 _" e
  8.   ...
    2 j) A% R6 D% t- \0 P
  9. </system.webServer>
复制代码

- P# v! S' a5 y; L' e% Q% w之所以说不人性化,是因为这样操作之后,别人iframe会显示服务器拒绝之类的信息,虽然是屏蔽了,但是自己网站也不能宣传了。
, ^6 @3 X- J; [( Z9 J+ N$ g
4 u8 `) q5 k/ V. S9 r6 w3、推荐解决方法。
9 A# m/ L- t6 O. l! V; H
  1. <script language="javascript">  2 d  S: Y& F1 G+ z
  2. if(top != self){
    7 n0 i$ c4 p. p; k6 H6 v- @
  3.     location.href = "http://xp6.org/iframe.html";  1 V4 T$ p& }3 c2 X
  4.     top.location.href=self.location.href;7 H) m* Y0 S1 e6 f! m
  5. }  
    ( x1 b1 j8 J  Z& J
  6. </script>
复制代码

' Q1 \8 u; a9 y4 U& W* @) M, D将上面的代码复制到需要屏蔽页面<head>里面加载。
$ Y! c% X3 q- j; U制作一个iframe.html页面里面放张网站宣传图片,加个链接,放到网站根目录。
4 l6 b* f& U% n5 y# U原理:
  a: ^! [* K, l! @* \第一步直接强制访问咱自己设定的iframe.html页面,如果网站禁用了JS跳转,那么执行到这一步就结束了,这样即使他们iframe了咱的网站,看到的只是咱的图片宣传页。( W: n! }- b" Q, z
第二步,如果没有禁用JS,那么会接着执行top.location.href=self.location.href; ,然后跳转到我们的网址页面。7 ~! o7 T) o) W, w7 l
目前测试这种方法没什么问题。( u+ Z" p3 F: L+ T# F
( C* b/ `' h1 Y, W0 C, c
回复

使用道具 举报

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

本版积分规则

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

虾皮社区,成立十年了!

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

Copyright © 2007-2019 xp6.org Powered by Discuz

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