2012-03-14 81 views
0

作为研究项目的一部分,我目前正在使用Google Caja项目的安全EcmaScript实施(https://code.google.com/p/)来研究第三方脚本的沙盒操作。 es-lab/wiki/SecureEcmaScript,https://code.google.com/p/google-caja/source/browse/trunk/src/com/google/caja/ses)。我设法在这样的沙箱中执行Google地图应用程序,即Google Maps API v3(https://maps.googleapis.com/maps/api/js),随后加载的脚本在受控环境中执行。但是,为了完成这项工作,我必须在Google地图应用程序加载的第一个脚本中执行两项修改(在撰写本文时为https://maps.gstatic.com/intl/en_us/mapfiles/api-3/8/2/main.js)。没有修改,应用程序无法运行,因为代码不符合ECMAScript 5严格模式。具体而言,下面的代码片段出现在文件的地方:Google Maps API严格模式合规性

R.cf=function(){return this}().navigator&&-1!=ha.userAgent[Mc]()[tb]("msie"); 

在严格模式下,function(){return this}回报undefined,造成了“导航”属性访问抛出一个错误。在非严格模式下,该函数将返回全局“窗口”对象。在严格模式下,我发现了另外一个这种情况导致错误的实例。

起初,我发现令人惊讶的是,Google地图应用程序不符合严格模式。据我所知,使用严格模式只有优点。但是,我认为原始代码可能是严格模式兼容的,但由缩小编译器完成的转换会消除合规性。从安全角度来看,能够以受控方式执行脚本非常有用。例如,当外部脚本受损并且其功能改变时,这将防止安全违规。因此,我认为能够在这样的沙箱内执行Google地图应用程序将会非常有用。但是,由于安全EcmaScript的Google Caja实施依赖于严格模式所施加的限制来保证其功能,因此它需要符合严格模式的Google地图应用程序。

所以我的问题是:Google地图应用程序的严格模式兼容版本即将推出吗?或者,目前的Google地图应用程序是否会被兼容的应用程序替换?

随着亲切的问候,

约伦

回答

1

好像你应该添加这地图API问题跟踪

http://code.google.com/p/gmaps-api-issues/

...注意到谷歌很少在upcomming功能发表评论。但通过添加到问题跟踪器。您1)允许其他开发人员对该建议“投票” - 增加其对Google开发人员的“重要性”,以及2)如果谷歌对此做任何事情,则允许您收到通知。

+0

好的谢谢你的答复。之前,我在邮件列表([email protected])上发布了我的问题,但由于它是技术问题而被拒绝,因此更适合在StackOverflow上发布。我已采纳了您的建议并针对问题跟踪器发布了功能请求。希望我会得到Google的回复。 – yorbro 2012-03-15 09:43:14

+0

我在问题跟踪器中找不到它。你有链接吗? – Blaise 2012-04-17 12:52:53