谷歌图表不安全的eval

Google Charts unsafe-eval

本文关键字:eval 不安全 谷歌      更新时间:2023-09-26

出于安全目的,我已经从CSP头中删除了script-src: 'unsafe-eval'。我注意到这已经打破了谷歌排行榜。图表现在无法呈现,并显示错误:

Invalid JSON string: {}

有什么想法吗?或者谷歌只是搞砸了,允许在他们的库中使用不安全的eval ?我对他们的地图也有同样的问题,不得不使用不同的库。

Google Visualization确实在内部使用eval()

当前Google可视化API正在使用:
1. eval on corechart.I.js(3次)
2. 调用jsapi

摘自这里,一个关于GV和Chrome应用程序清单v2兼容性的错误报告,大约1个月前。Google Visualization本身不符合Manifest V2:

的规则。

是你的代码或库使用eval(), new Function(), innerHTML,setTimeout(),或者以其他方式传递JS代码字符串动态评估?

  1. 使用JSON.parse()如果你解析JSON代码到一个对象。
  2. 使用一个csp友好的库,比如AngularJS。
  3. 在清单中创建一个沙箱条目,并在沙箱中运行受影响的代码,使用postMessage()与沙箱通信页面。

所以谷歌自己很清楚这个问题。

我的印象是GV内部使用eval(jsonString)而不是JSON.parse()由于浏览器兼容性。JSON.parse()在IE8之前不可用,之前的FF 3.1等等(见兼容性列表),这就是为什么当你阻止eval()时你会得到无效的JSON错误。

由于这也影响了GV如何遵守Manifest规则,我想这个问题很快就会消失。