Google Charts unsafe-eval

时间:2015-06-09 23:30:07

标签: javascript jquery google-visualization google-chartwrapper

出于安全考虑,我已从我的CSP标头中删除了script-src: 'unsafe-eval'。我注意到这已经破坏了Google Charts。图表现在无法呈现并显示错误:

Invalid JSON string: {}

任何想法或谷歌只是吹嘘它并允许他们的图书馆中的不安全评估?我的地图遇到了同样的问题,不得不使用不同的库。

1 个答案:

答案 0 :(得分:8)

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

  

目前Google Visualization API正在使用:
  1.核心图表上的评估.I.js(3次)
  2.评估jsapi

摘自here,关于GV和Chrome App Manifest v2兼容性的错误报告,大约1个月。 Google Visualization本身不符合Manifest V2的规则:

  

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

     
      
  1. 如果要将JSON代码解析为对象,请使用JSON.parse()。
  2.   
  3. 使用CSP友好的库,例如AngularJS。
  4.   
  5. 在清单中创建沙箱条目并在沙箱中运行受影响的代码,使用postMessage()与沙盒进行通信   页。
  6.   

所以google自己非常清楚这个问题。

我的印象是,由于浏览器的兼容性,GV内部使用的是eval(jsonString)而不是JSON.parse()。在IE8之前,{3.1}等之前JSON.parse()不可用(见compatibility list),这就是为什么在阻止eval()时出现无效的JSON错误的原因。

由于这也会影响GV遵守Manifest规则的方式,我猜这个问题很快就会消失。