2017-10-23 1 views
0

Ich habe ein Problem mit der Einrichtung eines CSP. Ich habe die snap.svg.js-Lib verbunden, um die Animation auf meiner Seite zu implementieren. Diese libs machen meine Animation so, dass sie viele Inline-Styles haben (zu jedem in meiner Svg, die ungefähr 2000+ sind). Also, wenn ich 'unsafe-inline' wie diese nicht angeben:
...
"style-src 'unsafe-inline'; "
...
, werde ich eine Menge von Verletzungen in der Konsole hat. Aber ich möchte keine Inline-Stile im Sinne der Sicherheit zulassen. Wie kann ich nur das Darstellen von Inline-Stilen zulassen, die aus der Datei snap.svg.js generiert werden?
Mein csp (nur Bericht zur Prüfung):Content Security Policy Konflikt

$csp = "Content-Security-Policy-Report-Only: " 
    . "default-src 'self' http://gc.kis.v2.scr.kaspersky-labs.com ; " 

    . "font-src 'self' https://fonts.googleapis.com https://fonts.gstatic.com data: ; " 

    . "script-src 'self' 'sha256-4B8QbxkufkPFIEFoveWSoiyIpMLitEc/N9oopV9wrU4=' 'sha256-KoZvlNi6WIlva5SMPsgkZKuz3pwSCUhpugmi7saPqak=' ; " 

    . "style-src 'self' https://fonts.googleapis.com ; " 

    . "img-src 'self' http://1.gravatar.com ; "; 
header($csp); 

Antwort

0

Mit einem Nonce in CSP 3 Sie vertrauen auf Skripte verbreiten können durch andere Skripte geladen, aber ich glaube nicht, ein Skript nonce jede Methode hat zu propagieren zu einem Stil.

Was müssten Sie tun würden entweder:

  1. Alter der Bibliothek (EEK) eine Nonce zu jedem Inline-Stil hinzuzufügen, es hinzufügt. Sie müssen auch eine Nonce für Ihre CSP und generierte Seiten arbeiten. Dies ist die beste Lösung, aber auch die schwierigste zu implementieren.
  2. Verwenden Sie SHA-Hashes für jeden Inline-Stil. Dies wird schnell unordentlich und unpraktisch, aber wenn Sie nur ein paar vorhersehbare Inline-Stile haben, können Sie sich davon entfernen, ohne eine vollständige Nonce-Implementierung durchzuführen oder die Sicherheit zu verringern.
  3. Verwenden Sie einfach unsafe-inline. Offensichtlich nicht ideal, aber besser als CSP überhaupt nicht verwenden, solange Javascript und andere aktive Inhalte gesperrt sind. Style ist einer der gefährlicheren, hält aber der Gefahr von script-src und wahrscheinlich object-src nicht wirklich stand.

Welches ist das Beste wird auf Ihre Situation kommen. Ich würde zuerst die SHA-Hash-Methode ausprobieren und genau sehen, wie viele Hashes Sie benötigen. Wenn sie komplett im Flug gemacht werden und du Dutzende von ihnen hast, wird es wahrscheinlich nicht funktionieren.

Es ist leider meine Erfahrung, dass die meisten Third Party Libs nicht mit CSP im Hinterkopf gemacht werden und schwierig oder unmöglich sind, damit zu arbeiten. Es ist wahrscheinlich etwas, wo, bis Bibliotheken/CDNs/etc CSP unterstützen sollen, wir weiterhin Kopfschmerzen haben werden.

Verwandte Themen