- Startseite
- Skills
- Sicherheit
- Datei-Upload-Sicherheit
Datei-Upload-Sicherheit
Datei-Upload-Implementierungen absichern — Inhaltsvalidierung, Speicherisolierung, Malware-Praevention und Zugriffskontrolle fuer hochgeladene Dateien.
Das Problem
Datei-Upload ist eines der gefaehrlichsten Features. Angreifer laden PHP-Shells als Bilder getarnt hoch, SVG-Dateien mit JavaScript, Zip-Bomben die den gesamten Speicherplatz belegen, oder schaedliche Dokumente die serverseitiges Rendering ausnutzen. Dateierweiterung, MIME-Typ und selbst die ersten Bytes einer Datei koennen gefaelscht werden. Ohne Inhaltsvalidierung, Speicherisolierung und Zugriffskontrolle wird ein Upload-Endpunkt zum direkten Pfad zur Remote Code Execution.
Der Prompt
Du bist ein Datei-Upload-Sicherheitsspezialist. Pruefe meine Upload-Implementierung und entwirf eine sichere Upload-Pipeline.
PLATTFORM: [z.B. Node.js/Multer, Python/FastAPI, PHP, S3-Direkt-Upload]
AKZEPTIERTE DATEIEN: [z.B. Bilder (JPEG, PNG), PDFs, CSV, beliebige Dokumente]
SPEICHER: [z.B. lokales Dateisystem, S3, Cloudflare R2, Datenbank-Blob]
VERARBEITUNG: [z.B. Bildgroessenanpassung, PDF-Rendering, CSV-Parsing, Virenscanning]
CODE:
[Upload-Handler, Validierungslogik, Speicherkonfiguration und Datei-Serving-Code einfuegen]
Diese Upload-Sicherheitskontrollen auditieren:
1. **Inhaltsvalidierung**: Magic-Bytes-Verifizierung, nicht nur Erweiterung/MIME-Typ?
2. **Groessenlimits**: Maximale Dateigroesse auf Reverse-Proxy- UND Anwendungsebene?
3. **Dateinamen-Sanitisierung**: Path-Traversal-Praevention, zufaellige Dateinamen-Generierung?
4. **Speicherisolierung**: Dateien ausserhalb des Web-Roots gespeichert? Separate Domain zum Ausliefern?
5. **Ausfuehrungsverhinderung**: Webserver konfiguriert, hochgeladene Dateien nie auszufuehren?
6. **Bildspezifisch**: Bilder re-enkodieren, um EXIF-Daten und eingebettete Skripte zu entfernen?
7. **Archiv-Handling**: Zip-Bomben-Schutz, Extraktionstiefenlimits?
8. **Virenscanning**: ClamAV oder Cloud-basiertes Scanning vor der Speicherung?
9. **Zugriffskontrolle**: Autorisierungspruefung vor dem Ausliefern? Signierte URLs?
10. **Rate-Limiting**: Upload-Frequenz und Gesamtspeicherlimits pro Nutzer?
Fuer jeden Befund Angriffsszenario und sichere Implementierung bereitstellen.
Beispielausgabe
## Datei-Upload-Audit: 5 Befunde
### KRITISCH: Keine Inhaltstyp-Validierung
Nur Dateierweiterung wird geprueft — Angreifer benennt shell.php in shell.jpg um.
Loesung: Magic Bytes validieren: JPEG beginnt mit FF D8 FF, PNG mit 89 50 4E 47.
### HOCH: Dateien im Web-Root gespeichert
Hochgeladene Dateien unter /public/uploads/ sind direkt zugaenglich und ausfuehrbar.
Loesung: Ausserhalb des Web-Roots speichern, ueber Controller mit Content-Disposition: attachment ausliefern.
Wann verwenden
Upload-Sicherheit vor dem Launch jedes Upload-Features, nach Aenderung von Speicher-Backends oder bei Erweiterung akzeptierter Dateitypen auditieren. Unverzichtbar fuer Anwendungen mit Nutzer-Avataren, Dokumenten-Uploads oder Mediengalerien.
Profi-Tipps
- Niemals der Erweiterung vertrauen — Dateiinhalt ueber Magic Bytes validieren. Eine Datei namens foto.jpg kann eine PHP-Webshell enthalten.
- Von separater Domain ausliefern — hochgeladene Dateien auf einem anderen Origin hosten, damit eingebettete Skripte nicht auf Cookies der Hauptanwendung zugreifen koennen.
- Bilder re-enkodieren — Sharp, Pillow oder ImageMagick verwenden, um eingebettete Skripte, EXIF-GPS-Daten oder Polyglot-Payloads zu entfernen.
- Speicherkontingente implementieren — ohne nutzerspezifische Limits kann ein Angreifer die Festplatte mit legitim aussehenden Uploads fuellen.