Google Fonts verstößt gegen die Inhaltssicherheitsrichtlinie

Lesezeit: 5 Minuten

Ich versuche, Google Fonts zu verwenden, und ich hatte noch nie Probleme, aber wenn ich jetzt versuche, die CSS-Datei zu meinem Header hinzuzufügen, erhalte ich diesen Fehler in der Konsole:

Weigerte sich, das Stylesheet zu laden 'http://fonts.googleapis.com/css?family=Whatever' weil es gegen die folgende Richtlinie zur Inhaltssicherheit verstößt: "style-src 'self' 'unsafe-inline'".

  • Sie müssen also den von Ihnen gesendeten CSP-Header ändern, um diese Ressource zuzulassen. Wenn Sie sich die aktuelle Einstellung ansehen, können Sie deutlich sehen, dass Stile auf den Standort beschränkt sind self was höchstwahrscheinlich nicht enthalten ist googleapis.com .

    – Arkascha

    29. November 2015 um 16:16 Uhr


  • Ich habe versucht, es mit einem Meta-Tag zu ändern und einige Dinge hinzuzufügen, die ich im Internet gesehen habe, aber ich konnte das Problem nicht lösen …

    – José María

    29. November 2015 um 16:17 Uhr

  • Das hat nichts mit Meta-Tags zu tun. EIN CSP header ist ein HTTP-Header, also Teil des Protokolls, nicht des Inhalts. Sie senden es absichtlich oder aus Versehen. Vielleicht, weil Sie ein Framework verwenden, aber wir können nicht mehr sagen, ohne dass Sie weitere Details posten.

    – Arkascha

    29. November 2015 um 16:17 Uhr


  • Hmmmm, ich verwende Meteor JS

    – José María

    29. November 2015 um 16:20 Uhr

  • Sie können diesen Header leicht selbst überprüfen, wenn Sie der angezeigten Fehlermeldung nicht glauben: Öffnen Sie einfach die Entwicklungskonsole Ihres Browsers und sehen Sie sich die Header der ausgeführten Basisanforderungen an. Sie werden besagten Header enthalten. Oder man benutzt einen Netzwerk-Sniffer, kommt das gleiche raus.

    – Arkascha

    29. November 2015 um 16:22 Uhr

Benutzer-Avatar
Rolinh

Hier sind zwei Dinge zu beheben:

  • Verwenden Sie https für den Link zu Google Fonts (https://fonts.googleapis.com/css?family=Whatever)
  • Autorisieren https://fonts.googleapis.com in style-src Richtlinie u https://fonts.gstatic.com in font-src Richtlinie: "style-src 'self' https://fonts.googleapis.com; font-src 'self' https://fonts.gstatic.com"

  • was ist der data: zum?

    – Daniel Birowsky Popeski

    2. September 2016 um 8:55 Uhr

  • Allows data: URIs to be used as a content source. Aus developer.mozilla.org/en/docs/Web/Security/CSP/…

    – James Spencer

    26. Oktober 2016 um 10:42 Uhr


  • Kopieren Sie für andere, die sich diese Antwort ansehen, nicht das ‘unsafe-inline’, da dies ohne triftigen Grund die Sicherheit verringert – es ist nicht erforderlich, damit die Schriftarten funktionieren. Der einzige Grund, warum es da ist, ist, dass das OP es in seinem ursprünglichen Code hatte. Verwenden style-src 'self' https://fonts.googleapis.com; font-src 'self' https://fonts.gstatic.com;

    – Kevin Lee

    16. Juli 2017 um 14:12 Uhr


  • @KevinLee Wenn Sie Ihren Kommentar in eine Antwort umwandeln, würde ich ihn positiv bewerten.

    – lilalinux

    4. August 2018 um 10:10 Uhr

  • @KevinLee tatsächlich könnte es sehr gut erforderlich sein, wenn Sie Ihre Stile einbetten – Hexe ist zum Beispiel in Reaktionsanwendungen sehr verbreitet.

    – jBoive

    27. November 2018 um 8:24 Uhr

Benutzer-Avatar
Owen

Wenn Sie wie ich und ein wenig verwirrt sind, weil jede Antwort nur besagt, dass Sie eine URL in a autorisieren müssen style-src Direktive, ohne zu zeigen, wie es geht, hier ist das vollständige Tag:

<meta http-equiv="Content-Security-Policy" content="style-src 'self' https://fonts.googleapis.com; font-src 'self' https://fonts.gstatic.com;">

  • Verringern die Inhaltsoptionen, die Sie ausgelassen haben, wie default-src usw., die Sicherheit, oder ist es dasselbe, als hätten Sie keine meta csp überhaupt markieren?

    – Drenai

    19. März 2018 um 14:44 Uhr

  • Mit dem unsafe-inline Attribut erlaubt, verringert es tatsächlich die Sicherheit. Das Tag kann ohne das gut funktionieren, da es Ihre App anfälliger für XSS-Angriffe macht.

    – Paul Razvan Berg

    30. März 2018 um 9:11 Uhr

  • ‘unsafe-inline’ entfernt

    – Owen

    9. April 2018 um 14:38 Uhr

  • Ich habe es einfach so verwendet: <meta http-equiv="Content-Security-Policy" content="style-src 'self' https://fonts.googleapis.com; font-src 'self' https://fonts.gstatic.com">

    – Yvonne Burrow

    9. April 2018 um 14:41 Uhr


  • @Owen Es ist wirklich schwierig, gute Informationen zu finden meta tag csps. Ich bin nicht sicher, ob ich meine Font-Warnung auflösen kann, auf die Gefahr hin, dass alles andere weniger sicher wird:-) Meine Website ist eine Portfolio-Website, und ich möchte nicht gefragt werden: “Warum tust du das?” in einem Interview:-)

    – Drenai

    18. April 2018 um 14:37 Uhr

Benutzer-Avatar
Manohar Reddy Poreddy

Es gibt mehrere Quellen, die angegeben werden können Content-Security-Policy.

Unten finden Sie klare Details, die für mich funktioniert haben.

Je nachdem, welchen Inhaltsfehler (CSS, Bild, Schriftart, Medien) Sie haben, können Sie die URL unten ändern.

<html>

<head>

  <meta http-equiv="Content-Security-Policy"
    content="
      default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; 
      style-src   'self' https://fonts.googleapis.com;
      font-src    'self' data: https://fonts.gstatic.com;
      img-src     'self' data: content:;
      media-src   *;
            "
  />

 <title>My page title</title>

</head>

<body>
  some text
</body>

</html>

Ich hoffe, das hilft.

  • was macht content: in deiner img-src tun? Das habe ich noch nie gesehen

    – Matija Nalis

    13. Oktober 2019 um 22:04 Uhr

  • Ich bin genau wie Sie, gesucht und behoben.

    – Manohar Reddy Poreddy

    14. Oktober 2019 um 4:01 Uhr

Beim Arbeiten mit HelmFolgendes funktioniert perfekt (in TypeScript geschrieben):

import * as express from 'express';
import { Express } from 'express';
const helmet = require('helmet');
const expressApp: Express = express(); // Create Express instance.

expressApp.use(
  helmet.contentSecurityPolicy({
    directives: {
      fontSrc: [
        "'self'", // Default policy for specifiying valid sources for fonts loaded using "@font-face": allow all content coming from origin (without subdomains).
        'https://fonts.gstatic.com' // Google Fonts.
      ],
      styleSrc: [
        "'self'", // Default policy for valid sources for stylesheets: allow all content coming from origin (without subdomains).
        'https://fonts.googleapis.com' // Google Fonts.
      ],
    }
  })
);

Die oben genannten Kombinationen haben bei mir nicht funktioniert. Mein Code importiert die Schriftarten aus einer .scss Datei so:

@import url('https://fonts.googleapis.com/icon?family=Material+Icons');

Folgendes habe ich hinzugefügt:

  • default-src wurde gerade eingestellt 'self'. Dies ist nicht notwendig, aber ich wollte, dass alles andere gesperrt ist. Diese Einschränkung kann Fehler in der Browserkonsole auslösen. Passen Sie sich nach Bedarf an. musste ich hinzufügen wss: planenum eine Web-Socket-Verbindung für den Angular-Debugger zuzulassen.
  • style-src brauchte die 'unsafe-inline' Stichwort. Ich vermute, dass es daran liegt, dass der Stil gepackt / minimiert ist.
  • script-src wurde auch mit benötigt 'unsafe-inline' Stichwort. Obwohl ich das heruntergeladene Stylesheet überprüft habe und nichts Offensichtliches gesehen habe, denke ich, dass es dort etwas geben muss, das als Skript betrachtet wird.
  • font-src brauchte die data: planen. Die Browserkonsole hat einen Fehler beim Abrufen ausgegeben data:application/font-woff;charset=utf-8… (“font-src”). Dies kann etwas sein, das von einer anderen Stelle in meinem Angular-Code kommt, aber es kann für jemanden nützlich sein.

Unten das letzte Ding.

default-src 'self' wss:;
style-src 'self' https://fonts.googleapis.com 'unsafe-inline';
script-src 'self' https://fonts.googleapis.com 'unsafe-inline';
font-src 'self' data: https://fonts.gstatic.com

1299790cookie-checkGoogle Fonts verstößt gegen die Inhaltssicherheitsrichtlinie

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy