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:
- Template enthält externe URL in
includeResource()
- CrispyCMS erkennt externe URL automatisch
- Ressource wird serverseitig über Proxy geladen
- 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:
- MIME-Type HTML → Prüfen Sie den Content-Type der Ziel-URL
- Redirect erforderlich → Verwenden Sie die finale URL
- Bogon-IP → Externe URL zeigt auf private IP-Adresse
- 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.