HTTP CSP manifest-src Directive

Die Content-Security-Policy manifest-src Direktive kontrolliert erlaubte Quellen für Web Application Manifests die über <link rel="manifest"> referenziert werden. Sie verhindert Manifest-Hijacking, App-Impersonation und Manipulation von PWA-Metadaten durch Einschränkung erlaubter Manifest-Origins.

Typ

CSP Fetch-Direktive

Syntax

Die Direktive akzeptiert eine Whitelist vertrauenswürdiger Manifest-Quellen.

http
Content-Security-Policy: manifest-src 'self'
Content-Security-Policy: manifest-src 'self' https://cdn.example.com

Direktiven

Die manifest-src Direktive verwendet Standard-CSP-Quellausdrücke zur Kontrolle erlaubter Manifest-Dateien.

'none'
Verbietet Web App Manifests. Nützlich für traditionelle Websites ohne PWA-Funktionalität.
'self'
Erlaubt Manifests nur vom gleichen Origin. Standard für self-hosted PWAs.
https://cdn.example.com
Domain-Whitelisting. Erlaubt gezielt Manifests von externen CDN-Providern.
https:
Erlaubt alle HTTPS-Manifest-Quellen. Erzwingt verschlüsselte Übertragung.

Beispiele

Nachfolgend finden Sie praktische Anwendungsbeispiele für die manifest-src Direktive.

Beispiel 1 Self-Hosted PWA Manifest

http
HTTP/1.1 200 OK
Content-Security-Policy: manifest-src 'self'

<!DOCTYPE html>
<html lang="de">
<head>
  <link rel="manifest" href="/manifest.json">
  <!-- Erlaubt: Same-Origin -->

  <link rel="manifest" href="https://cdn.evil.com/fake-manifest.json">
  <!-- Blockiert durch CSP -->
</head>
</html>

Manifest-Datei /manifest.json:

json
{
  "name": "API Dashboard",
  "short_name": "Dashboard",
  "start_url": "/",
  "display": "standalone",
  "theme_color": "#2196F3",
  "icons": [{
    "src": "/icon-192.png",
    "sizes": "192x192",
    "type": "image/png"
  }]
}

Beispiel 2 CDN-Hosted Progressive Web App

http
Content-Security-Policy: manifest-src 'self' https://static.cdn.example.com

<!-- PWA mit CDN-gehosteten Assets -->
<head>
  <link rel="manifest" href="https://static.cdn.example.com/manifests/app.json">
  <!-- Erlaubt: Whitelisted CDN -->
</head>

Beispiel 3 Strikte Policy ohne PWA-Funktionalität

http
Content-Security-Policy: manifest-src 'none'; default-src 'self'

<!-- Traditionelle Website ohne Progressive Web App Features -->
<head>
  <title>API Documentation</title>
  <!-- Kein Manifest benötigt -->
</head>

PWA Manifest Security Flow

CSP manifest-src verhindert Manifest-Hijacking

Vorteile für die Systemarchitektur

  • PWA-Integrität: Verhindert Manifest-Manipulation die App-Namen Icons oder Start-URLs verändern könnte um Phishing zu ermöglichen
  • App-Impersonation-Schutz: Blockiert externe Manifests die legitime Apps imitieren würden durch Kontrolle erlaubter Manifest-Origins
  • Metadata-Sicherheit: Schützt kritische PWA-Metadaten wie Service-Worker-Scope Permissions und Display-Modes vor unauthorisierter Modifikation

Spezifikation

Content Security Policy Level 3 – W3C Working Draft https://www.w3.org/TR/CSP3/#directive-manifest-src

Weitere Spezifikationen

CSP default-src Directive, Content-Security-Policy Header