Verwalten der Inhaltssicherheitsrichtlinie Ihrer Website

Die Inhaltssicherheitsrichtlinie (Content Security Policy, CSP) ist eine zusätzliche Sicherheitsebene, mit der einige Arten von Webangriffen wie websiteübergreifende Skripts, Dateneinfügungsangriffe, Websitedefacement oder die Verteilung von Schadsoftware erkannt und abgemildert werden können. CSP bietet eine umfangreiche Reihe von Richtliniendirektiven, mit denen die Ressourcen gesteuert werden können, die eine Websiteseite laden kann. Jede Richtlinie definiert die Einschränkungen für einen bestimmten Ressourcentyp.

Voraussetzungen

Important

Testen Sie zuerst CSP-Änderungen in einer Entwicklungsumgebung. Das Aktivieren oder Ändern von CSP auf vorhandenen Websites kann die Funktionalität unterbrechen, wenn die Richtlinie keine Skripts von Drittanbietern, benutzerdefinierten Code oder externen Ressourcen berücksichtigt. 

Verwenden Sie beim Vornehmen von CSP-Änderungen den folgenden Ansatz:

  1. Beginnen Sie mit dem Modus "Nur Melden", um Verstöße zu identifizieren, ohne Ressourcen zu blockieren. 
  2. Überprüfen Sie die Browserkonsole für CSP-Verletzungsmeldungen. 
  3. Fügen Sie erforderliche Quellen inkrementell basierend auf gefundenen Verstößen hinzu. 
  4. Wechseln Sie zum Erzwingungsmodus, sobald keine kritischen Verstöße gemeldet werden. 

Standard-CSP-Richtlinie

Important

Für Websites, die nach dem 10. November 2025 erstellt wurden, ist CSP standardmäßig mit der folgenden Richtlinie aktiviert:

script-src 'self' content.powerapps.com content.powerapps.us content.appsplatform.us content.powerapps.cn 'nonce';
style-src 'unsafe-inline' https:;

Diese Standardrichtlinie:

  • Lässt Skripts vom Ursprung Ihrer Website zu ('self')
  • Erlaubt Skripte aus Power Pages-Inhaltsbereitstellungsdomänen
  • Verwendet die nonce-basierte Skriptvalidierung für Inline-Skripts.
  • Ermöglicht Inline-Stile und Stile aus HTTPS-Quellen

Für Websites, die vor dieser Änderung erstellt wurden: CSP ist möglicherweise nicht aktiviert. Wir empfehlen, sie durch Konfigurieren der HTTP/Content-Security-Policy Websiteeinstellung zu aktivieren. Eine schrittweise Anleitung finden Sie im Migrationshandbuch für vorhandene Websites>

Grundlegendes zu den Standardrichtlinien

Direktive  Wert  Purpose 
script-src  'self'  Lässt Skripts vom Ursprung Ihrer Website zu
script-src  content.powerapps.com, content.powerapps.us, content.appsplatform.us, content.powerapps.cn  Ermöglicht Power Pages-Plattform-Skripte
script-src  'nonce'  Aktiviert die Nonce-basierte Überprüfung für Inline-Skripte
style-src  'unsafe-inline'  Ermöglicht Inline-Stile (erforderlich für viele Websitefunktionen)
style-src  https:  Ermöglicht Formatvorlagen aus einer beliebigen HTTPS-Quelle.

Anpassen von CSP

Sie können die Standard-CSP-Richtlinie ändern, erweitern oder deaktivieren, um die spezifischen Anforderungen Ihrer Website zu erfüllen.

Ändern oder Deaktivieren von CSP

  1. Melden Sie sich bei Power Pages an, und öffnen Sie Ihre Website zur Bearbeitung.
  2. Wählen Sie im linken Bereich Weitere Elemente (...) >Portalverwaltung aus. 
  3. Wählen Sie " Websiteeinstellungen" in der Portalverwaltungs-App aus. 
  4. Suchen Sie die Website-Einstellung HTTP/Content-Security-Policy, oder erstellen Sie sie. 
  5. Ändern Sie den Wert nach Bedarf. Um CSP zu deaktivieren, löschen Sie den Websiteeinstellungswert (lassen Sie ihn leer), anstatt die Einstellung zu löschen.

Hinzufügen externer Skriptquellen

Wenn Ihre Website externe JavaScript-Bibliotheken verwendet (z. B. Analysen, Chat-Widgets), fügen Sie der Direktive ihre script-src Domänen hinzu:

script-src 'self' content.powerapps.com content.powerapps.us
  content.appsplatform.us content.powerapps.cn 'nonce'
  https://cdn.example.com https://analytics.example.com;
style-src 'unsafe-inline' https:;

Hinzufügen zusätzlicher Direktiven

Sie können bei Bedarf weitere CSP-Direktiven hinzufügen. Zu den allgemeinen Ergänzungen gehören:

Direktive  Example  Purpose 
img-src  img-src 'self' https: data:;  Steuern von Bildquellen
font-src  font-src 'self' https://fonts.gstatic.com;  Schriftartquellen steuern
connect-src  connect-src 'self' https://api.example.com;  Steuerung der AJAX-/Abrufziele
frame-src  frame-src 'self' https://www.youtube.com;  Quellen steuern iframe
frame-ancestors  frame-ancestors 'self';  Steuern, wer Ihre Website einbetten kann
media-src  media-src 'self' https:;  Steuern von Audio-/Videoquellen
object-src  object-src 'none';  Blockieren von Plug-Ins (Flash, Java-Applets)

Nonce-Unterstützung

Was ist eine Nonce?

Eine Nonce (einmal verwendete Zahl) ist ein kryptografischer Zufallswert, der für jede Seitenanforderung generiert wird. Wenn Sie Nonce aktivieren, werden nur Inlineskripts, die ein übereinstimmendes Nonce-Attribut enthalten, ausgeführt. 

Wie funktioniert Nonce in Power Pages?

Wenn Sie "Nonce" in Ihre CSP-Richtlinie einschließen:

  1. Power Pages generiert einen eindeutigen Nonce-Wert für jeden Seitenaufruf. 
  2. Power Pages fügt die Nonce automatisch zu Inlineskript-Tags aus vertrauenswürdigen Quellen hinzu. 
  3. Power Pages blockiert Inlineskripts ohne die entsprechenden Nonce. 
  4. Dieser Prozess verhindert, dass injizierte schädliche Skripts ausgeführt werden. 
  5. Power Pages sichert Inline-Ereignishandler über eine automatische Hashgenerierung separat ab. 

Nonce ist standardmäßig aktiviert

Die standardmäßige CSP-Richtlinie enthält 'nonce' in der script-src-Direktive und bietet automatischen Schutz für Inline-Skripts aus vertrauenswürdigen Quellen. 

Wie funktioniert Nonce mit benutzerdefinierten Skripts?

Power Pages behandelt Nonce-Einfügungen in den meisten Szenarien automatisch:

  • Flüssige Vorlagen: Power Pages fügt das Nonce-Attribut automatisch in Inlineskripts ein, die nach dem Rendern durch Liquid-Vorlagen gerendert werden. Von den Herstellern sind keine Maßnahmen erforderlich. 

  • Inline-Ereignishandler: Power Pages sichert Ereignishandler automatisch durch Hash-Generierung. Es ist keine manuelle Aktion erforderlich. 

  • Dynamisch erstellte Skripts: Skripts, die zur Laufzeit über JavaScript (z. B. mit Hilfe von document.createElement) erstellt wurden, können die serverseitige Nonce nicht empfangen. Verschieben Sie nach Möglichkeit solche Skripts in externe Dateien, und fügen Sie der Direktive ihre script-src Quelldomänen hinzu. 

Testen mit Nur-Bericht-Modus

Bevor Sie eine CSP-Richtlinie erzwingen, verwenden Sie den „Nur melden“-Modus, um zu identifizieren, was die Richtlinie blockieren würde, ohne tatsächlich zu blockieren:

  1. Erstellen Sie in der Portalverwaltung eine Websiteeinstellung mit dem Namen HTTP/Content-Security-Policy-Report-Only
  2. Legen Sie den Wert auf die CSP-Richtlinie fest, die Sie testen möchten. 
  3. Öffnen Sie Ihre Website in einem Browser, und überprüfen Sie die Konsole auf Verletzungsberichte. 
  4. Beheben Sie alle Verstöße, indem Sie die Richtlinie anpassen. 
  5. Sobald Sie zufrieden sind, verschieben Sie den Richtlinienwert in den HTTP/Content-Security-Policy (Erzwingungsmodus). 
  6. Löschen Sie die HTTP/Content-Security-Policy-Report-Only Websiteeinstellung. 

Note

Sie können beide HTTP/Content-Security-Policy und HTTP/Content-Security-Policy-Report-Only gleichzeitig verwenden. Verwenden Sie den Nur-Bericht-Modus, um strengere Richtlinien zu testen, während eine Basisrichtlinie erzwungen wird. 

Migrationshandbuch für vorhandene Websites

Führen Sie für Websites, die erstellt wurden, bevor CSP standardmäßig aktiviert wurde, die folgenden Schritte aus, um CSP zu aktivieren:

Schritt 1: Überprüfen des aktuellen CSP-Status

  1. Öffnen Sie die Portalverwaltung>Websiteeinstellungen
  2. Suchen Sie nach HTTP/Content-Security-Policy
  3. Wenn die Einstellung nicht vorhanden ist, ist CSP nicht auf Ihrer Website aktiviert. 

Note

Wenn Sie CSP nicht konfigurieren, zeigt die Integritätsprüfung der Website eine Warnung an: "HTTP/Content-Security-Policy Websiteeinstellung fehlt oder falsch konfiguriert ist." Sie können diese Warnung in der Integritätsdiagnose Ihrer Website überprüfen. 

Schritt 2: Starten mit dem modus "Nur Bericht"

  1. Erstellen Sie eine Websiteeinstellung namens HTTP/Content-Security-Policy-Report-Only mit der Standardrichtlinie. 

    script-src 'self' content.powerapps.com content.powerapps.us content.appsplatform.us content.powerapps.cn 'nonce'; style-src 'unsafe-inline' https:;
    
  2. Durchsuchen Sie Ihre Website, und überprüfen Sie die Browserkonsole auf Verstöße. 

  3. Fügen Sie der Richtlinie alle erforderlichen externen Domänen hinzu. 

Schritt 3: Aktivieren der Erzwingung

  1. Erstellen Sie die HTTP/Content-Security-Policy-Websiteeinstellung mit Ihrer getesteten Richtlinie. 
  2. Entfernen Sie optional die Einstellung "Nur Bericht". 
  3. Überwachen Sie Probleme, und passen Sie sie bei Bedarf an. 

Considerations

  • Vorhandene Websites werden nicht automatisch für die Durchsetzung auf CSP umgestellt. 

  • Die automatische Nonce-Einfügung verarbeitet benutzerdefiniertes JavaScript, das über den Code-Editor zu mit Liquid gerenderten Inhalten hinzugefügt wurde. 

  • Sie müssen explizit Domains für Skripts von Drittanbietern (Analyse, Chat-Widgets usw.) zu script-src hinzufügen. 

Problembehandlung

Skripts aus externen Quellen werden blockiert.

Symptom: Die Browserkonsole zeigt einen CSP-Verstoß für eine Skriptquelle an.

Lösung: Überprüfen Sie zunächst, ob die externe Quelle vertrauenswürdig ist und für Ihre Website erforderlich ist. Fügen Sie nur Domänen aus Quellen hinzu, die Sie vertrauen. Fügen Sie nach der Überprüfung die Domäne des Skripts zu Ihrer script-src Direktive hinzu:

script-src 'self' content.powerapps.com content.powerapps.us
  content.appsplatform.us content.powerapps.cn 'nonce'
  https://blocked-domain.com;
style-src 'unsafe-inline' https:;

Inlineskripts werden nicht ausgeführt

Symptom: Benutzerdefinierte Inlineskripts werden nicht ausgeführt; CSP-Nonceverletzung in der Konsole. 

Lösung: Bei flüssig gerenderten Inhalten fügt Power Pages automatisch das Nonce-Attribut ein. Wenn Ihre Skripts weiterhin blockiert sind, stellen Sie sicher, dass sich das Skript in einer Liquid-Vorlage oder einer server-gerenderten Seite befindet, auf der automatische Nonce-Injektion angewendet wird. Für dynamisch erstellte Skripts sollten Sie diese in externe .js Dateien verschieben und die Quelldomäne zu Ihrer CSP-Richtlinie hinzufügen. 

Bilder oder Schriftarten werden nicht geladen

Symptom: Bilder werden fehlerhaft angezeigt, oder benutzerdefinierte Schriftarten werden nicht gerendert. Die Browserkonsole zeigt CSP-Verletzungen für img-src oder font-src.

Lösung: Fügen Sie ihrer CSP-Richtlinie die entsprechende Quelldirektive hinzu:

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

Iframes werden nicht angezeigt

Symptom: Eingebettete Inhalte (YouTube, Karten, Power BI) werden nicht geladen. Die Browserkonsole zeigt CSP-Verstöße für frame-src.

Lösung: Hinzufügen frame-src mit den erforderlichen Domänen:

frame-src 'self' https://www.youtube.com
  https://app.powerbi.com;

Widgets von Drittanbietern funktionieren nicht

Symptom: Chat-Widgets, Analyseskripts oder andere Drittanbieterintegrationen werden nicht ordnungsgemäß geladen oder funktionieren.

Lösung: Widgets von Drittanbietern erfordern häufig mehrere Direktiven. Überprüfen Sie die Browserkonsole auf alle Verletzungstypen, und fügen Sie die erforderlichen Quellen hinzu. Beispiel für ein Chat-Widget:

script-src 'self' content.powerapps.com 'nonce'
  https://widget.chatprovider.com;
style-src 'unsafe-inline' https:;
connect-src 'self' https://api.chatprovider.com;
frame-src 'self' https://widget.chatprovider.com;
img-src 'self' https: data:;

Referenz zu Websiteeinstellungen

Websiteeinstellung  Purpose  Standard 
HTTP/Content-Security-Policy Die vollständige CSP-Richtlinie (Erzwingungsmodus) Siehe Standardrichtlinie oben (nur neue Websites)
HTTP/Content-Security-Policy-Report-Only CSP-Richtlinie im Modus "Nur Bericht" (protokollierte, nicht blockierte Verstöße) Nicht festgelegt

 

Bewährte Methoden

  1. Beginnen Sie mit der Standardrichtlinie: Der Standard-CSP bietet einen starken Schutz, während Power Pages-Features ordnungsgemäß funktionieren können. 
  2. Testen Sie zuerst mit dem Modus "Nur Bericht": Verwenden Sie HTTP/Content-Security-Policy-Report-Only, um zu identifizieren, was vor der Erzwingung blockiert werden würde. 
  3. Inkrementelles Hinzufügen von Quellen: Fügen Sie bei der Integration externer Dienste nur die erforderlichen spezifischen Domänen hinzu. Vermeiden Sie breite Wildcards wie https: für script-src
  4. Vermeiden Sie unsafe-inline Skripte: Der auf 'nonce' basierte Ansatz ist sicherer, als alle Inline-Skripte zuzulassen. Die Standardrichtlinie verwendet Nonce statt unsafe-inline für script-src
  5. Überwachen der Browserkonsole: CSP-Verstöße werden in der Browserkonsole protokolliert und helfen dabei, blockierte Ressourcen zu identifizieren. 
  6. Regelmäßige Überprüfung und Verschärfung von Richtlinien: Wenn Sie Abhängigkeiten von externen Ressourcen identifizieren und entfernen, strafften Sie Ihre CSP-Richtlinie entsprechend. 
  7. Verwenden Sie spezifische Domänen anstelle von Wildcards: Geben Sie statt https: genauer Domänen an (z. B. https://cdn.example.com), um die Sicherheit zu erhöhen. 

Häufige Szenarien

Szenario: Hinzufügen von Google Analytics

script-src 'self' content.powerapps.com 'nonce'
  https://www.googletagmanager.com
  https://www.google-analytics.com;
style-src 'unsafe-inline' https:;
img-src 'self' https: data:;
connect-src 'self'
  https://www.google-analytics.com
  https://analytics.google.com;

Szenario: Hinzufügen einer YouTube-Einbettung

script-src 'self' content.powerapps.com 'nonce';
style-src 'unsafe-inline' https:;
frame-src 'self' https://www.youtube.com
  https://www.youtube-nocookie.com;

Szenario: Verwenden von Google Fonts

script-src 'self' content.powerapps.com 'nonce';
style-src 'unsafe-inline'
  https://fonts.googleapis.com;
font-src 'self' https://fonts.gstatic.com;