Page 203 - 《软件学报》2021年第8期
P. 203

罗武  等:浏览器同源策略安全研究综述                                                             2485


                    为适应 Web 应用的新型场景,跨域/跨源通信机制随之而来.根据是否需要服务器端的参与,这些跨域/跨源
                 通信机制可以分为两大类:无服务器辅助通信机制与服务器辅助通信机制.无服务器辅助通信机制依赖于特定
                 的 JavaScriptAPI,发送方通过调用 document.domain [87] 修改自身身份来实现同域名下跨源通信,也可以通过调用
                 postMessage [57] 来向跨域的接收方发送需要共享的消息.服务器辅助通信机制既可以依赖于特定的浏览器策
                 略——跨域资源共享(CORS)       [88] ,也可以由开发者利用一些 HTML 特性来自定义实现,如 JSON-P             [89] .图 5 总结了
                 两大类跨域/跨源通信机制的发展过程,本节将重点对这两类机制的现有研究工作进行总结分析.














                                     Fig.5   Cross-domain/cross-origin communication mechanisms
                                                  图 5   跨域/跨源通信机制
                 4.1   无服务器辅助通信机制威胁与应对

                 4.1.1    document.domain 跨域通信
                    (1)  机制概述
                    网页可以通过对 document.domain 的赋值来将自身提升为父域名.举例来说,一个网页的 URL 为 http://mail.
                 xyz.com:8080/index.html,则该网页的源为三元组〈http,mail.xyz.com,8080〉,当该网页执行了 document.domain=
                 “xyz.com”后,浏览器将该网页的源更新为三元组〈http,xyz.com,null〉.注意,源中的端口字段被设置为空(null).当
                 目标网页来自于父域名(如 http://xyz.com:8080/)或者兄弟域名(如 http://video.xyz.com:8080/),并且执行了
                 document.domain=“xyz.com”时,目标网页的源更新为三元组〈http,xyz.com,null〉.此时,浏览器的同源策略将本网
                 页与目标网页视为同源,从而允许资源访问.特别地,一个网页不能设置 document.domain 为顶级域名,如.com,
                 .org 等,且〈http,xyz.com,8080〉与〈http, xyz.com, null〉不同源.
                    (2)  安全威胁与应对
                    使用 document.domain 进行跨源通信的安全威胁,是同源策略在处理资源访问上的不一致性.Singh 等人                        [13]
                 阐述了这种不一致性,并据此构造了多种攻击来绕过同源策略的限制.一个源的资源包含了 DOM 和 JavaScript
                 对象、cookie、本地存储以及用来发起网络请求与获取网络响应的 XMLHttpRequestAPI.当一个网页使用
                 document.domain 进行域名提升后,我们称提升后的源为该网页的有效标识(effective ID).在域名提升之后,当该
                 网页访问其他网页的 DOM 和 JavaScript 对象时,同源策略将使用有效标识进行决策.但是,对于 cookie 和本地存
                 储的访问以及 XMLHttpRequest 的使用,同源策略仍然使用该网页初始的源作为访问主体标识.基于同源策略在
                 检查资源访问时处理有效标识的不一致性,攻击者网页能够构造攻击来偷取受害者网页的 cookie 与本地存储、
                 获取受害者网站服务器数据(如获取用户邮箱等)或更改受害者网站服务器状态(如转账等操作).
                    图 6 给出了通过利用这种不一致性来获取跨源 cookie 与网络资源的攻击.在这一类攻击中,受害者网站
                 (x.a.com)上有一个网页(1.html)使用 document.domain 将其有效标识设置为 a.com,这种域名提升将允许 1.html
                 访问 a.com 的某些资源.然而,当攻击者拥有来自于 y.a.com 的网页 attacker.html 时,攻击者将具备发起此类攻击
                 的条件.具体攻击过程如下.
                    1)   attacker.html 向 1.html 注入脚本.由于 attacker.html 与 1.html 的有效标识一致,同源策略将允许 attacker.
                        html 访问 1.html 的 DOM 对象,从而实现恶意脚本的注入.
   198   199   200   201   202   203   204   205   206   207   208