Skip to content

Resource Proxying


Überblick

Das Resource Proxying System wird automatisch aktiviert, wenn in Templates die Twig-Funktion includeResource() mit einer externen URL (http/https) verwendet wird.

Hauptmerkmale

Datenschutz & Sicherheit

  • 🛡️ IP-Anonymisierung - Benutzer-IPs werden vor externen Servern geschützt
  • 🔒 SSRF-Schutz - Verhindert Server-Side Request Forgery Angriffe
  • Performance-Optimierung - Serverseitiges Caching für schnellere Ladezeiten
  • GDPR-Compliance - Automatische Datenschutzkonformität

Funktionsweise

Automatischer Proxy-Einsatz

Transparente Weiterleitung

Externe Ressourcen werden nicht direkt vom Client geladen, sondern über den CrispyCMS-Proxy geleitet. Dies verhindert, dass Benutzer-IP-Adressen an externe Server übertragen werden.

Ablauf:

  1. Template enthält externe URL in includeResource()
  2. CrispyCMS erkennt externe URL automatisch
  3. Ressource wird serverseitig über Proxy geladen
  4. Gecachte Version wird an den Client ausgeliefert

Caching-System

Performance-Optimierung

Standard-TTL: 5 Minuten

  • Ressourcen werden serverseitig zwischengespeichert
  • Reduziert Ladezeiten bei wiederholten Aufrufen
  • Entlastet externe Server
  • Verbessert Ausfallsicherheit

Verwendung in Templates

Syntax und Beispiele

<!-- Lokale Ressourcen (kein Proxy) -->
<link href='{{ includeResource("css/styles.css") }}' rel='stylesheet' type='text/css'>
<script src='{{ includeResource("js/main.js") }}'></script>

<!-- Externe Ressourcen (über Proxy) -->
<link href='{{ includeResource("https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css") }}' rel='stylesheet'>
<script src='{{ includeResource("https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js") }}'></script>

Unterscheidung: Lokal vs. Extern

Ressourcen-Typ Beispiel Proxy-Verhalten
Lokale Datei css/styles.css ❌ Kein Proxy
Relativer Pfad ../assets/script.js ❌ Kein Proxy
HTTP-URL http://example.com/style.css ✅ Über Proxy
HTTPS-URL https://cdn.example.com/font.woff ✅ Über Proxy

Sicherheitsfeatures

1. DNS Rebinding Protection

SSRF-Schutz

Zweck: Schutz vor Server-Side Request Forgery Angriffen

  • Ressourcen mit IP-Adressen in Bogon-Netzen werden blockiert
  • Verhindert Zugriff auf interne Netzwerk-Ressourcen
  • Schützt vor Localhost-Angriffen

Blockierte IP-Bereiche:

  • 127.0.0.0/8 (Localhost)
  • 10.0.0.0/8 (Private Netze)
  • 172.16.0.0/12 (Private Netze)
  • 192.168.0.0/16 (Private Netze)

2. Protokoll-Beschränkungen

Unterstützte Protokolle

Erlaubt: http:// und https://

Blockiert: ftp://, file://, data://, javascript:, etc.

3. Redirect-Verhalten

Keine Redirect-Verfolgung

Der Proxy folgt keinen HTTP-Redirects (301, 302, etc.)

  • Ziel-URLs müssen direkt erreichbar sein
  • Verhindert Redirect-basierte Angriffe
  • Erhöht Vorhersagbarkeit des Systems

4. MIME-Type Filtering

HTML-Blockierung

Ressourcen mit MIME-Type text/html werden blockiert


Konfiguration

Cache-Verwaltung

Cache-Steuerung

Standard-Einstellungen:

  • TTL: 5 Minuten
  • Speicherort: /tmp/crisp-cache
  • Invalidierung: Automatisch nach TTL-Ablauf

Fehlerbehebung

Häufige Probleme

Ressource wird nicht geladen

Mögliche Ursachen:

  1. MIME-Type HTML → Prüfen Sie den Content-Type der Ziel-URL
  2. Redirect erforderlich → Verwenden Sie die finale URL
  3. Bogon-IP → Externe URL zeigt auf private IP-Adresse
  4. Unsicheres Protokoll → Nur HTTP/HTTPS sind erlaubt

Performance-Probleme

Lösungsansätze:

  • Cache-TTL überprüfen
  • Anzahl externer Ressourcen reduzieren
  • CDN-URLs auf Erreichbarkeit prüfen

GDPR-Compliance Fragen

Bestätigung:

✅ Benutzer-IPs werden nicht an externe Server übertragen
✅ Proxy-Server fungiert als Anonymisierungs-Layer
✅ Keine direkten Client-Server-Verbindungen zu externen Anbietern


Best Practices

Empfohlene Verwendung

Optimale Nutzung

Verwenden Sie für:

  • Externe CSS-Frameworks (Bootstrap, Tailwind)
  • JavaScript-Libraries von CDNs
  • Web-Fonts von Google Fonts oder anderen Anbietern
  • Icons und Assets von externen Quellen

Vermeiden Sie bei:

  • Häufig ändernden APIs
  • Sehr großen Dateien (> 5MB)
  • Ressourcen mit kurzer Lebensdauer

Performance-Tipps

  • Konsolidierung: Reduzieren Sie die Anzahl externer Ressourcen
  • Lokale Kopien: Erwägen Sie lokale Kopien häufig genutzter Libraries
  • CDN-Auswahl: Wählen Sie zuverlässige, schnelle CDNs

Wichtiger Hinweis

Das Resource Proxying System ist primär für statische Assets konzipiert. Für dynamische APIs oder Echtzeitdaten sollten alternative Integrationsmethoden verwendet werden.