作为研究项目的一部分,我目前正在使用Google Caja项目的Secure 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 Maps应用程序,即Google Maps API v3(https://maps.googleapis.com/maps/api/js),随后加载的脚本在受控环境中执行。但是,为了完成这项工作,我必须在Google Maps应用程序加载的第一个脚本中执行两次修改(在撰写本文时,这是https://maps.gstatic.com/intl/en_us/mapfiles/api-3/8/2/main.js)。如果没有修改,应用程序将无法运行,因为代码不符合ECMAScript 5严格模式。具体来说,下面的代码片段出现在文件的某个地方:
R.cf=function(){return this}().navigator&&-1!=ha.userAgent[Mc]()[tb]("msie");
在严格模式下,function(){return this}
返回undefined
,导致“navigator”的属性访问引发错误。在非严格模式下,该函数将返回全局“窗口”对象。我发现了另外一个实例,这种情况在严格模式下会导致错误。
起初,我发现谷歌地图应用程序不符合严格模式令人惊讶。据我所知,严格模式的使用只有优势。但是,我认为原始代码可能是严格模式兼容的,但是缩小编译器完成的转换会删除合规性。从安全的角度来看,能够以受控方式执行脚本非常有用。例如,当外部脚本遭到破坏并且其功能发生变化时,这将防止安全违规。因此,我认为能够在这样的沙箱中执行Google Maps应用程序非常有用。但是,由于Secure CamaScript的Google Caja实施依赖于严格模式强加的限制来保证其功能,因此需要严格模式的Google Maps应用程序。
所以我的问题是:Google Maps应用程序的严格模式兼容版本很快就会推出吗?或者,当前的Google地图应用程序是否会被合规的应用程序取代?
亲切的问候,
约伦
答案 0 :(得分:1)
似乎您应该将其添加到Maps API问题跟踪器
http://code.google.com/p/gmaps-api-issues/
...注意Google很少评论upcomming功能。但是通过添加到问题跟踪器。你1)允许其他开发者对该建议进行“投票” - 增加其对谷歌开发者的“重要性”,2)允许你在谷歌做任何事情时收到通知。