2016-09-08 1 views
2

Weiß jemand, ob ich Google Caja konfigurieren kann, damit einige Bibliotheken funktionieren und nicht bereinigt werden? Ich habe meinen eigenen CAJA-Server und eine auf NodeJS basierende Anwendung. Ich übergebe den Code von Google CAJA, der hauptsächlich mit Diagrammen und Diagrammen in Verbindung steht, aber alle Funktionen der Bibliothek (wie d3js, chart.js) werden von CAJA blockiert. Alle Bibliotheken durchlaufen Caja und stellen eine Verbindung zum Benutzerdokument ohne Fehler her, aber wenn Benutzer ein Feature der Bibliothek anfordern (z. B. d3.select("body").append("svg")), werden Fehler angezeigt, z. B. this * is not a function. Kennt jemand irgendeine Methode?Wie können Bibliotheken über Google CAJA weitergegeben werden?

PS Ich weiß über URI Policy, aber es scheint, dass es nur alle Sachen kontrolliert, die aus den gleichen Herkunftsdomänennamen stammen, wenn even if bibliothek durch uriPolicy geleitet wird, wird es immer noch von Caja überprüft.

+0

Haben Sie das Attribut mildern der UriPolicy gesehen? – tapananand

+0

Hallo! Ja, ich habe es gefunden, leider konnte ich es nicht funktionieren lassen. Ich konnte keine Dokumentation dafür finden, ich fand sie im Quellcode von caja selbst. Ich wäre sehr dankbar, wenn Sie Informationen darüber haben, wie es funktioniert. – kimslava93

Antwort

1

Sie können URL von der Funktion uriPolicy.miitate an eine vorreduzierte/vordefinierte/vertrauenswürdige Version der Bibliothek zurückgeben. Sie können einfach die Bibliotheken-URL überprüfen und wenn sie übereinstimmt, geben Sie die vorgemerkte URL zurück, sonst geben Sie null zurück. Zum Beispiel:

var uriPolicy = { 
    mitigate: function(uri) { 
     if(/jquery\.js/.test(uri)) 
      return urlToMyJquery.js; 
     else 
      return null; 
    } 
} 
+0

Danke, und was ist, wenn ich etwas verbinden möchte, das nicht aus der Liste der vertrauenswürdigen Benutzer stammt? Zum Beispiel D3.js. Wie kann ich es von meinem eigenen Speicher bekommen? – kimslava93

+0

Sie können URL grundsätzlich an jede Ressource zurückgeben, sei es gemildert oder nicht. Auch wenn ein nicht eingeschränkter Nutzer Ihre App Sicherheitsrisiken aussetzt, seien Sie vorsichtig – tapananand

Verwandte Themen