Hochgeladene Dateien schützen – private Ablage & signierte Links
Hinweis: Verfügbar ab Version 2.5.0
Bis Version 2.4.x lagen hochgeladene Kundendateien unter public/uploads/ und wurden vom Webserver direkt ausgeliefert – ohne Prüfung. Wer den Pfad kannte, konnte die Datei abrufen. Und der Pfad steht in der Bestellbestätigung des Kunden, in der internen Benachrichtigungs-E-Mail und in der Administration.
Bei Druckvorlagen ist das meist unkritisch. Sobald Ihre Kunden aber Ausweiskopien, Atteste, Rezepte oder Konstruktionszeichnungen hochladen, ist es das nicht mehr.
Ab 2.5.0 können Sie die Dateien außerhalb des öffentlichen Verzeichnisses ablegen lassen. Sie werden dann nur noch über einen signierten Link ausgeliefert, der seine Berechtigung selbst mitbringt und nach einer von Ihnen festgelegten Frist abläuft.
Die drei Einstellungen
Sie finden sie in den Plugin-Einstellungen unter Datei-Downloads.
| Einstellung | Standard | Wirkung |
|---|---|---|
| Uploads privat ablegen und signierte Download-Links verwenden | bei Update: aus, bei Neuinstallation: an | Legt fest, wo neue Uploads gespeichert werden |
| Gültigkeit der Download-Links in Tagen | 90 | Wie lange ein Link in einer bereits verschickten E-Mail funktioniert. 0 = unbegrenzt |
| Alte öffentliche Pfade weiter ausliefern | an | Hält Links funktionsfähig, die vor der Umstellung verschickt wurden |
Warum die Gültigkeit selten stört
Die Frist betrifft ausschließlich Links in bereits verschickten E-Mails. Im Kundenkonto, auf der Bestellabschluss-Seite und in der Administration wird der Link bei jedem Aufruf neu erzeugt und ist damit immer gültig.
Betroffen sind also nur zwei Fälle: Gastbesteller, die ihre alte Bestellbestätigung hervorholen, und Mitarbeiter, die eine archivierte interne Mail öffnen – wobei Letztere die Datei auch in der Administration finden.
90 Tage decken den 14-tägigen Widerruf plus die übliche Reklamationszeit mit Luft ab. Wenn Sie mit langlaufenden Prozessen arbeiten – Sonderanfertigungen, Bauzeichnungen – setzen Sie die Frist hoch oder auf 0.
Die Umstellung Schritt für Schritt
Jeder Schritt lässt sich einzeln zurücknehmen.
1. Update einspielen
Es ändert sich zunächst nichts. Bei einem Update bleibt die private Ablage ausgeschaltet, damit Ihre bestehenden E-Mail-Vorlagen unverändert weiterarbeiten.
2. E-Mail-Vorlagen umstellen
Ersetzen Sie in Ihren Vorlagen den selbst zusammengebauten Pfad durch den Link, den das Plugin mitliefert:
Vorher
<a href="{{ url('frontend.home.page') }}uploads/final/{{ upload.qquuid }}/{{ upload.fileName }}">{{ upload.fileName }}</a>Nachher
<a href="{{ upload.downloadUrl }}">{{ upload.fileName }}</a>Das funktioniert sofort und ändert das Verhalten noch nicht: Solange die private Ablage aus ist, liefert downloadUrl genau den öffentlichen Pfad, den Ihre Vorlage vorher selbst gebaut hat.
Betroffen sind beide Vorlagen: die Bestellbestätigung an den Kunden und die interne E-Mail an Ihr Team.
Warum das der wichtigste Schritt ist: Mit
downloadUrlbauen Ihre Vorlagen den Pfad nie wieder selbst zusammen. Künftige Änderungen an der Ablage bleiben damit für Sie unsichtbar – genau das Problem, das diese Umstellung gerade verursacht, entsteht kein zweites Mal.
3. Private Ablage einschalten
Ab jetzt landen neue Uploads außerhalb des öffentlichen Verzeichnisses und werden nur über signierte Links ausgeliefert. Bestehende Dateien bleiben liegen, wo sie sind, und bleiben erreichbar.
4. Bestehende Dateien umziehen
bin/console futi:uploads:migrate --dry-runDer Probelauf zeigt, wie viele Dateien betroffen sind und wie viel Speicher sie belegen, ohne etwas zu verändern. Sind Sie einverstanden:
bin/console futi:uploads:migrateDer Befehl arbeitet in Blöcken, überspringt bereits umgezogene Dateien und lässt sich jederzeit abbrechen und erneut starten.
Solange noch Dateien im öffentlichen Verzeichnis liegen, weist Sie ein Hinweis in den Plugin-Einstellungen darauf hin.
Warum das Umschalten keine Links zerstört
Die Einstellung steuert nur, wo neue Uploads gespeichert werden. Ausgeliefert wird immer nach dem tatsächlichen Speicherort der jeweiligen Datei:
- Datei liegt privat → signierter Link, unabhängig von der Einstellung
- Datei liegt öffentlich → öffentlicher Pfad
Deshalb können Sie die Einstellung ein- und wieder ausschalten, ohne dass ein einziger Link ins Leere zeigt – auch nicht nach einer Migration.
Voraussetzung
Die private Ablage nutzt das private Dateisystem von Shopware. In der Standardkonfiguration ist das ein lokales Verzeichnis (files/) außerhalb des Dokumentenstamms – dort ist nichts zu tun.
Haben Sie das private Dateisystem auf einen entfernten Speicher umgestellt (S3 oder vergleichbar), lassen Sie die Einstellung bitte ausgeschaltet.
Wenn ein Link abgelaufen ist
Kunden sehen dann keine Fehlerseite, sondern einen Hinweis mit dem Weg zur Bestellübersicht im Kundenkonto. Von dort ist die Datei jederzeit erreichbar, weil der Link dort bei jedem Aufruf neu erzeugt wird.
War diese Seite hilfreich?
Support
Gemietete Plugins (Shopware Store)
Für Support zu im Shopware Store gemieteten Plugins erstellen Sie bitte ein Support-Ticket in Ihrem Shopware-Konto.
Shopware-Ticket erstellenAllgemeine Anfragen
Für allgemeine Fragen oder Kauflizenzen erreichen Sie uns per E-Mail.
E-Mail senden