6

Ich habe script-src: 'unsafe-eval' aus meinen CSP-Headern für Sicherheitszwecke entfernt. Ich habe bemerkt, dass dies jetzt Google Charts gebrochen hat. Das Diagramm nicht jetzt zu machen und zeigt den Fehler:Google Charts unsafe-eval

Invalid JSON string: {} 

Irgendwelche Ideen oder Google bläst es einfach und damit unsicheren-eval in ihren Bibliotheken? Ich hatte das gleiche Problem mit ihren Karten und musste mit einer anderen Bibliothek gehen.

Antwort

7

Google Visualization verwendet in der Tat eval() intern

Currently Google Visualization API is using:
1. eval on corechart.I.js (3 times)
2. eval on jsapi

Entnommen here, ein Fehlerbericht in Bezug auf GV und Chrome App Manifest v2-Kompatibilität, etwa 1 Monat alt. Google Visualization nicht selbst entspricht den Regeln der Manifest V2:

Is your code or library using eval(), new Function(), innerHTML, setTimeout(), or otherwise passing strings of JS code that are dynamically evaluated?

  1. Use JSON.parse() if you’re parsing JSON code into an object.
  2. Use a CSP-friendly library, for example, AngularJS.
  3. Create a sandbox entry in your manifest and run the affected code in the sandbox, using postMessage() to communicate with the sandboxed page.

So google sich so ziemlich das Problem bekannt sind.

Mein Eindruck ist, dass GV intern eval(jsonString) anstelle von JSON.parse() aufgrund der Browser-Kompatibilität verwenden. JSON.parse() war nicht verfügbar vor IE8, vorherige FF 3.1 und so weiter (siehe compatibility list), deshalb erhalten Sie den ungültigen JSON-Fehler, wenn Sie eval() blockieren.

Da dies auch Auswirkungen darauf hat, wie GV den Manifest-Regeln entspricht, wird das Problem sehr, sehr bald verschwinden.

+2

"Da dies auch Einfluss darauf hat, wie GV den Manifest-Regeln entspricht, wird das Problem sehr, sehr bald verschwinden". 18 Monate später ist dies immer noch nicht behoben. – Flavien

+0

@Flavien ,, beschuldige mich nicht, beschuldige Google – davidkonrad

+0

Mach dir keine Sorgen, ich beschuldige dich nicht :) – Flavien