it-swarm.com.de

Hash-Stil für Inhaltssicherheitsrichtlinien

Ich habe ein IMG-Tag auf einer Seite mit einem Linienstil, der so aussieht:

style="height:50px;width:180px;display:block;"

Ich kann es nicht in ein externes Stylesheet verschieben, da das img-Tag von einem Steuerelement eines Drittanbieters generiert wird. Also habe ich den in Chrome Entwicklertools) angezeigten Hash kopiert.

Ein Teil der Content-Security-Policy sieht folgendermaßen aus:

style-src 'self' 'sha256-7kYG54iPGE/Vf+GFqobEwpF9bfCAVA/elCz7OiSmMl0=';

Aber Chrome blockiert es immer noch mit der folgenden Meldung:

Refused to apply inline style because it violates the following Content Security Policy directive: "style-src 'self' 'sha256-7kYG54iPGE/Vf+GFqobEwpF9bfCAVA/elCz7OiSmMl0='". Either the 'unsafe-inline' keyword, a hash ('sha256-7kYG54iPGE/Vf+GFqobEwpF9bfCAVA/elCz7OiSmMl0='), or a nonce ('nonce-...') is required to enable inline execution.

Der Hash in der Richtlinie stimmt mit dem erforderlichen Hash in der Fehlermeldung überein. Warum blockiert Chrome blockiert es immer noch?

Vielen Dank...

8
td48260

Es sieht so aus, als müssten Sie mit Chrome (aber nicht Firefox)) explizit 'unsafe-hashes' da das Geben der Hashes allein nur für Skript- und Stilabschnitte und nicht für Attribute gilt. Siehe 8.3. Verwendung von "'unsicheren Hashes'" . Damit sollte Ihr CSP folgendermaßen aussehen:

style-src 'self' 'unsafe-hashes' 'sha256-7kYG54iPGE/Vf+GFqobEwpF9bfCAVA/elCz7OiSmMl0=';

Weitere Diskussionen darüber, warum Chrome sich für dieses Verhalten entschieden hat, finden Sie unter dieses Chromium-Problem und dieses W3C-Problem .

6
Steffen Ullrich